Compare commits

...

2 Commits

12 changed files with 209 additions and 84 deletions

View File

@ -1,7 +1,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
{% assign title = '' %}
{% if page.layout == 'author' %}
@ -34,64 +34,64 @@
{% endif %}
<title>{{ title }}</title>
<meta name="description" content="{{ description }}">
<meta name="description" content="{{ description }}"/>
{% if page.tags %}
<meta name="keywords" content="{{ page.tags | join: ', ' }}">
<meta name="keywords" content="{{ page.tags | join: ', ' }}"/>
{% endif %}
<!-- Social: Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ title }}">
<meta name="twitter:description" content="{{ description }}">
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="{{ title }}"/>
<meta name="twitter:description" content="{{ description }}"/>
{% if image contains '://' %}
<meta property="twitter:image" content="{{ image }}">
<meta property="twitter:image" content="{{ image }}"/>
{% else %}
<meta property="twitter:image" content="{{ image | prepend: site.url }}">
<meta property="twitter:image" content="{{ image | prepend: site.url }}"/>
{% endif %}
{% if site.twitter_username %}
<meta name="twitter:site" content="@{{ site.twitter_username }}">
<meta name="twitter:site" content="@{{ site.twitter_username }}"/>
{% endif %}
<!-- Social: Facebook / Open Graph -->
<meta property="og:url" content="{{ url }}">
<meta property="og:title" content="{{ title }}">
<meta property="og:image" content="{{ image }}">
<meta property="og:description" content="{{ description }}">
<meta property="og:site_name" content="{{ site.title }}">
<meta property="og:url" content="{{ url }}"/>
<meta property="og:title" content="{{ title }}"/>
<meta property="og:image" content="{{ image }}"/>
<meta property="og:description" content="{{ description }}"/>
<meta property="og:site_name" content="{{ site.title }}"/>
<!-- Favicon -->
<link rel="shortcut icon" href="{{ site.baseurl }}/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="{{ site.baseurl }}/favicon.ico" type="image/x-icon"/>
<!-- Apple Touch Icons -->
<link rel="apple-touch-icon" href="{{ site.baseurl }}/assets/img/icons/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="/assets/img/icons/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/assets/img/icons/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/assets/img/icons/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/assets/img/icons/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="60x60" href="/assets/img/icons/apple-touch-icon-60x60.png" />
<link rel="apple-touch-icon" sizes="120x120" href="/assets/img/icons/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="76x76" href="/assets/img/icons/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="152x152" href="/assets/img/icons/apple-touch-icon-152x152.png" />
<link rel="apple-touch-icon" href="{{ site.baseurl }}/assets/img/icons/apple-touch-icon.png"/>
<link rel="apple-touch-icon" sizes="57x57" href="/assets/img/icons/apple-touch-icon-57x57.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="/assets/img/icons/apple-touch-icon-72x72.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="/assets/img/icons/apple-touch-icon-114x114.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="/assets/img/icons/apple-touch-icon-144x144.png"/>
<link rel="apple-touch-icon" sizes="60x60" href="/assets/img/icons/apple-touch-icon-60x60.png"/>
<link rel="apple-touch-icon" sizes="120x120" href="/assets/img/icons/apple-touch-icon-120x120.png"/>
<link rel="apple-touch-icon" sizes="76x76" href="/assets/img/icons/apple-touch-icon-76x76.png"/>
<link rel="apple-touch-icon" sizes="152x152" href="/assets/img/icons/apple-touch-icon-152x152.png"/>
<!-- Windows 8 Tile Icons -->
<meta name="application-name" content="{{ site.name }}">
<meta name="msapplication-TileColor" content="#141414">
<meta name="msapplication-square70x70logo" content="smalltile.png" />
<meta name="msapplication-square150x150logo" content="mediumtile.png" />
<meta name="msapplication-wide310x150logo" content="widetile.png" />
<meta name="msapplication-square310x310logo" content="largetile.png" />
<meta name="application-name" content="{{ site.name }}"/>
<meta name="msapplication-TileColor" content="#141414"/>
<meta name="msapplication-square70x70logo" content="smalltile.png"/>
<meta name="msapplication-square150x150logo" content="mediumtile.png"/>
<meta name="msapplication-wide310x150logo" content="widetile.png"/>
<meta name="msapplication-square310x310logo" content="largetile.png"/>
<!-- Android Lolipop Theme Color -->
<meta name="theme-color" content="#141414">
<meta name="theme-color" content="#141414"/>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Titillium+Web:300,400,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Titillium+Web:300,400,700" rel="stylesheet"/>
<link rel="stylesheet" href="{{ '/assets/css/styles.css' | prepend: site.baseurl }}">
<link rel="canonical" href="{{ url }}">
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ '/feed.xml' | prepend: site.baseurl | prepend: site.url }}" />
<link rel="stylesheet" href="{{ '/assets/css/styles.css' | prepend: site.baseurl }}"/>
<link rel="canonical" href="{{ url }}"/>
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ '/feed.xml' | prepend: site.baseurl | prepend: site.url }}"/>
<!-- Include extra styles -->
{% include extra-css.html %}
@ -103,7 +103,8 @@
<script>
window.site_config = {
baseurl: "{{ site.baseurl }}",
url: {{ site.url | jsonify }},
baseurl: {{ site.baseurl | jsonify }},
};
window.page_config = {
software_data: {{ page.software_data | jsonify }},

View File

@ -109,15 +109,15 @@ layout: main
"@type": "WebPage",
"mainEntity": {
"@type": "Blog",
"name": "{{ site.name }}",
"headline": "{{ site.title }}",
"description": "{{ site.description }}",
"name": {{ site.name | jsonify }},
"headline": {{ site.title | jsonify }},
"description": {{ site.description | jsonify }},
"url": "{{ site.url }}{{site.baseurl}}/",
"inLanguage": "{{ site.language }}",
"isFamilyFriendly": "true",
"creator": {
"@type": "Organization",
"name": "{{ site.name }}",
"name": {{ site.name | jsonify }},
"url": "{{ site.url }}{{site.baseurl}}/",
"sameAs": [
{{ social_urls | split: "," | join: "," }}
@ -131,9 +131,9 @@ layout: main
{% assign author = site.authors | where: "name", post.author | first %}
{
"@type": "BlogPosting",
"name": "{{ post.title }}",
"headline": "{{ post.subtitle }}",
"description": "{{ post.description }}",
"name": {{ post.title | jsonify }},
"headline": {{ post.subtitle | jsonify }},
"description": {{ post.description | jsonify }},
"image": "{{ post.image }}",
"url": "{{ post.url | prepend: site.baseurl | prepend: site.url }}",
"inLanguage": "{{ site.language }}",
@ -142,12 +142,12 @@ layout: main
"dateModified": "{{ post.date | date: '%Y-%m-%d/' }}",
"author": {
"@type": "Person",
"name": "{{ author.display_name }}",
"name": {{ author.display_name | jsonify }},
"url": "{{ author.url | prepend: site.baseurl | prepend: site.url }}"
},
"publisher": {
"@type": "Organization",
"name": "{{ site.name }}",
"name": {{ site.name | jsonify }},
"url": "{{ site.url }}{{site.baseurl}}/",
"logo": {
"@type": "ImageObject",

View File

@ -123,9 +123,9 @@
{
"@context": "http://schema.org",
"@type": "BlogPosting",
"name": "{{ page.title }}",
"headline": "{{ page.subtitle }}",
"description": "{{ page.description }}",
"name": {{ page.title | jsonify }},
"headline": {{ page.subtitle | jsonify }},
"description": {{ page.description | jsonify }},
"image": "{{ page.image }}",
"url": "{{ page.url | prepend: site.baseurl | prepend: site.url }}",
"articleBody": "{{ content | strip_html | xml_escape | textilize }}",
@ -136,13 +136,13 @@
"dateModified": "{{ page.date | date: '%Y-%m-%d/' }}",
"author": {
"@type": "Person",
"name": "{{ author.display_name }}",
"name": {{ author.display_name | jsonify }},
{% if author.photo %}
"image": "{{ author.photo }}",
{% else %}
"image": {{ "/assets/img/user.jpg" | prepend: site.baseurl | prepend: site.url }},
{% endif %}
"jobTitle": "{{ author.position }}",
"jobTitle": {{ author.position | jsonify }},
"url": "{{ author.url | prepend: site.baseurl | prepend: site.url }}",
"sameAs": [
{{ author_urls | split: "," | join: "," }}
@ -150,7 +150,7 @@
},
"publisher": {
"@type": "Organization",
"name": "{{ site.name }}",
"name": {{ site.name | jsonify }},
"url": "{{ site.url }}{{site.baseurl}}/",
"logo": {
"@type": "ImageObject",

View File

@ -18,7 +18,7 @@ software_data:
# embed_url: "https://html-classic.itch.zone/html/4531906/index.html"
release :
source : "aftermarket"
type : "release v1.0.0"
type : "release 1.0.0"
---
## About the game

View File

@ -14,10 +14,18 @@ tags:
- "precision"
- "levels"
- "reflexes"
- "Unity"
author: "octobot"
mobygames_id: 70600
software_data:
platform : "web"
frame_url : "https://gamingshitposting.github.io/ext-bin-1/geometrylite.io/game/geometry-dash-full-version/index.html"
screen:
orientation: "landscape"
display: "fullscreen"
release :
source : "homebrew"
type : "porting"
---
## About the game
@ -35,4 +43,5 @@ Since its initial release, Geometry Dash Lite has amassed a dedicated fanbase an
## Resources
* Official page of the game: <https://play.google.com/store/apps/details?id=com.robtopx.geometryjumplite>
* Page of the HTML5 porting: <https://geometrylite.io/geometry-dash-full-version>

View File

@ -0,0 +1,47 @@
---
layout: "post"
title: "Little Alchemy 2"
subtitle: "Unleash your inner alchemist in this captivating puzzle game of creation and discovery."
description: "Little Alchemy 2 invites players to embark on a journey of elemental exploration and experimentation. Combining different elements to create new ones, this addictive puzzle game challenges your creativity and logic as you uncover the vast array of possibilities within its magical world."
image: "/assets/media/games/little-alchemy-2/little_alchemy_2.webp"
image_source: "internal"
category: "games"
tags:
- "puzzle"
- "alchemy"
- "creativity"
- "logic"
- "casual"
- "minimalist"
- "mobile"
- "educational"
author: "octobot"
mobygames_id: "101108"
software_data:
platform: "web"
frame_url: "https://gamingshitposting.github.io/ext-bin-1/littlealchemy2.com/index.html"
release:
source: "official"
type: "release"
---
## About the game
Little Alchemy 2 is a captivating puzzle game that immerses players in the enchanting world of alchemy, where the combination of elements leads to endless discoveries and creations. Building upon its predecessor, Little Alchemy, this sequel offers an expanded universe filled with over 700 items waiting to be crafted.
At its core, the gameplay is deceptively simple yet incredibly engaging. Players start with just four basic elements: air, earth, fire, and water. Through experimentation and logical thinking, they must combine these elements to create new ones, gradually unlocking more complex items. The possibilities are vast, ranging from mundane objects like bicycles and houses to fantastical creatures and phenomena like unicorns and earthquakes.
The game's intuitive interface makes the alchemical process accessible to players of all ages. Each new combination unlocks a new element, encouraging players to continuously experiment and explore. The joy of discovery is palpable as players uncover unexpected combinations and witness the transformation of elements into something entirely new.
Beyond its addictive gameplay, Little Alchemy 2 offers a charming aesthetic that enhances the overall experience. The minimalist design, accompanied by whimsical sound effects, creates a soothing atmosphere conducive to concentration and creativity. Whether playing for a few minutes or diving into extended sessions, players will find themselves captivated by the game's delightful world.
Little Alchemy 2 also encourages players to think outside the box, rewarding curiosity and experimentation. While some combinations may seem straightforward, others require unconventional thinking and lateral problem-solving skills. The game fosters a sense of discovery and accomplishment as players unravel its secrets one combination at a time.
Moreover, Little Alchemy 2 fosters a sense of community through its online features. Players can share their discoveries and achievements with friends via social media platforms, fostering a sense of camaraderie and collaboration. The game's global community of players contributes to its enduring appeal, with enthusiasts exchanging tips, tricks, and theories on forums and fan sites.
In summary, Little Alchemy 2 is more than just a game—it's an immersive journey into the wondrous world of alchemy. With its addictive gameplay, charming aesthetic, and endless possibilities for discovery, it's sure to enchant players of all ages and backgrounds.
## Resources
* Official site of the game: <https://littlealchemy2.com/>

View File

@ -50,3 +50,10 @@ iframe#software-embed-frame
border: none;
overflow: hidden;
}
#ConfigurationCustomizer > ul > li {
display: block;
}
#ConfigurationCustomizer > ul[data-section]:before {
font-weight: bold;
}

View File

@ -5,9 +5,12 @@ var prefsIndex = 'SalaMuseoGames/Prefs/v1';
var Prefs = {
pwaManifests: { default: true, name: "Allow installing the site as a PWA" },
softwarePwaManifests: { default: true, dependsOn: "pwaManifests", name: "Allow installing individual games as PWAs" },
// offlineCache: { default: true, name: "Cache site pages and game files offline", summary: "Allow faster site navigation, and gameplay without an Internet connection, by caching unlimited data offline. Disable if you want to save storage. (Note that data for some emulators and games is always cached regardless of this setting; you can only manage their data when they show an option in their interface.)" },
// dataExport: { onclick: (function(){}), section: "data", name: "Export configuration and gamesaves" },
// dataImport: { onclick: (function(){}), section: "data", name: "Import configuration and gamesaves" },
// featurePreview: { default: false, name: "Use experimental features before their release", summary: "If some new site features or adjustments are scheduled to release soon, you might be chosen to preview them before they are officially available" },
developerMode: { default: false, name: "Developer Mode", summary: "Show options and enable features dedicated to developers" },
allowDownloads: { default: false, section: "developer", name: "Allow downloads where available" },
allowDownloads: { default: false, section: "developer", name: "Allow downloads where available", summary: "Only for developers." },
};
function SavePrefs () {
@ -15,7 +18,7 @@ function SavePrefs () {
Object.keys(Prefs).forEach(function(key){
items[key] = Prefs[key].value;
});
localStorage.setItem(prefsIndex, items);
localStorage.setItem(prefsIndex, JSON.stringify(items));
}
var storedPrefs = JSON.parse(localStorage.getItem(prefsIndex)) || {};
@ -25,27 +28,43 @@ Object.keys(Prefs).forEach(function(key){
});
var PrefsSections = {
developer: { name: "Developer", visible: Prefs.developerMode.value },
data: { name: "Data management", visible: true },
developer: { name: "Development", visible: Prefs.developerMode.value },
};
if (ConfigurationCustomizerElem) {
var rootElem = ConfigurationCustomizerElem;
rootElem.innerHTML = null;
var configElem = document.querySelector('#ConfigurationCustomizer');
if (configElem) {
var styleElem = document.createElement('style');
configElem.innerHTML = null;
configElem.appendChild(styleElem);
Object.keys(Object.assign({ default: null }, PrefsSections)).forEach(function(key){
var section = PrefsSections[key];
var sectionElem = document.createElement('ul');
sectionElem.dataset.section = key;
sectionElem.style.display = (PrefsSections[key] && !PrefsSections[key].visible ? 'none' : '');
rootElem.appendChild(sectionElem);
sectionElem.style.display = (section && !section.visible ? 'none' : '');
styleElem.innerHTML += `#ConfigurationCustomizer > ul[data-section="${key}"]:before { content: "${(section && section.name) || ''}" }`;
configElem.appendChild(sectionElem);
});
Object.keys(Prefs).forEach(function(key){
// TODO: finish HTML
var pref = Prefs[key];
var prefElem = document.createElement('p');
prefElem.innerHTML += `<label><input type="checkbox" ${pref.value && 'checked'} disabled/> ${pref.name}</label><br/><small>${pref.summary || ''}</small>`;
rootElem.querySelector(`[data-section="${pref.section || 'default'}"]`).appendChild(prefElem);
var prefElem = document.createElement('li');
var prefType = (pref.default === undefined && pref.onclick ? 'button' : 'checkbox');
prefElem.dataset.pref = key;
prefElem.innerHTML += `<label>
<input type="${prefType}" ${pref.value && 'checked'} value="${prefType === 'button' && pref.name}"/>
${prefType !== 'button' ? pref.name : ''}
<br/><small>${pref.summary || ''}</small>
</label>`;
prefElem.querySelector('input').onclick = pref.onclick;
prefElem.querySelector('input').onchange = function(){
Prefs[key].value = this.checked;
SavePrefs();
};
configElem.querySelector(`[data-section="${pref.section || 'default'}"]`).appendChild(prefElem);
});
}
window.SalaMuseoGames.Prefs = Prefs;
SavePrefs();
})();

View File

@ -1,20 +1,60 @@
(function(){
return // TODO finish
var Prefs = SalaMuseoGames.Prefs;
var Software = SalaMuseoGames.page.software_data;
var Screen = (Software && Software.screen);
var Site = SalaMuseoGames.site;
if (Prefs.pwaManifests.value) {
var manifestData;
if (Prefs.softwarePwaManifests.value && SalaMuseoGames.page.software_data) {
// TODO add individual manifests on games pages
if (Prefs.softwarePwaManifests.value && Software) {
// specific manifests on games pages
var pageUrl = (location.href + ''); // TODO Url parameters to make the game open fullscreen and automatically start
manifestData = {
name: document.querySelector('.post-title').textContent,
description: document.querySelector('.post-subtitle').textContent,
start_url: pageUrl,
scope: pageUrl,
display: ((Screen && Screen.display) || "standalone"),
orientation: ((Screen && Screen.orientation) || "any"),
};
} else {
// TODO add site manifest on global pages
// site manifest on global pages
var ldData;
for (var elem of document.querySelectorAll('script[type="application/ld+json"]')) {
// extract site data from JSON-LD data blocks
var data = JSON.parse(elem.innerHTML);
if (data['@type'] === 'Organization') {
ldData = data;
break;
};
}
var pageUrl = (Site.url + Site.baseurl);
manifestData = {
name: ldData.name,
description: ldData.description,
start_url: pageUrl,
scope: pageUrl,
display: "standalone",
};
}
manifestData = Object.assign(manifestData, {
scope: location.href,
background_color: (Software && Software.background_color || getComputedStyle(document.body).backgroundColor),
icons: [{
src: (SalaMuseoGames.page.icon || (Site.url + Site.baseurl + '/assets/img/icons/mediumtile.png')),
sizes: "any",
purpose: "any",
}],
});
var manifestElem = document.createElement('link');
manifestElem.rel = 'manifest';
manifestElem.href = 'data:application/manifest+json;utf8,' + encodeURIComponent(JSON.stringify(manifestData));
manifestElem.href = ('data:application/manifest+json;utf8,' + encodeURIComponent(JSON.stringify(manifestData)));
document.head.appendChild(manifestElem);
}
if (Prefs.offlineCache.value) {
navigator.serviceWorker.register('/SalaMuseoGames-ServiceWorker.js');
}
})();

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

View File

@ -11,7 +11,7 @@ cd "$( dirname "$( realpath "$0" )" )"
cat << [EOF] > "./_posts/$3-$2.md"
---
layout: "post"
title: ""
title: "$([ -n "$4" ] && curl -L "https://www.mobygames.com/game/$4/" | grep '<meta property="og:title"' | cut -b36-)"
subtitle: ""
description: ""
image: "/assets/media/games/$2/"
@ -20,13 +20,17 @@ category: "games"
tags:
- ""
author: "octobot"
mobygames_id: "$4"
software_data:
platform : ""
rom_index : ""
release :
region : ""
source : ""
type : ""
platform: ""
frame_url: ""
release:
region: ""
source: ""
type: ""
screen:
orientation: ""
display: ""
---
## About the game

View File

@ -10,16 +10,14 @@ permalink: "/configuration/"
This page allows you to manage advanced, global settings for this entire site, and access special features.
All your changes are saved automatically.
<!-- TODO:
* Disable offline caching
* Toggle reproduction history
* Specify preferred emulators (backends, cores)
* Force override emulators
* Toggle automatic web/social embeds
* Try to load games marked unavailable
* Configs/saves import/export
-->
<div id="ConfigurationCustomizerElem"><p>Loading...</p></div>
Work-in-progress. Coming soon, you will be able to modify these options.
<div id="ConfigurationCustomizer"><p>Loading...</p></div>