=== Shakvaro EGF Reader Shortcode ===
Contributors: devshakil, shakvaro
Tags: shortcode, egf, interactive, game, embed
Requires at least: 5.8
Tested up to: 6.9
Requires PHP: 7.2
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Embed and play EGF 1.1 interactive games inside WordPress posts or pages with a simple shortcode.

== Description ==

**Shakvaro EGF Reader Shortcode** lets you embed an EGF 1.1 interactive game player directly inside any WordPress post or page using a simple shortcode. Upload your `.egf` file to the Media Library, copy its URL, and drop the shortcode — the reader renders in-place with built-in pause, score, about, and settings panels.

The reader is fully client-side: once rendered it loads the `.egf` package, unpacks it, and plays the game without making any third-party calls.

This plugin is not affiliated with, endorsed by, or sponsored by the authors of the EGF (Educational Game Format) specification or egf-format.org. "EGF" refers to the open file format the reader supports.

= Features =

* Simple `[egf_reader]` shortcode — no block editor required.
* Allows uploading `.egf` files to the WordPress Media Library.
* Built-in player UI: pause, score tracking, about-the-game, and audio/theme settings.
* Interface available in 9 languages (English, French, Spanish, Portuguese, Chinese, Arabic, Hindi, Urdu, Russian) with automatic browser-language detection.
* Light and dark themes.
* Works on any theme — the reader is self-contained and style-scoped.

= Shortcode parameters =

* `game` *(required)* — URL of the `.egf` game file to load.
* `lang` *(optional, default: `auto`)* — interface language. Use `auto` to pick the best language from the visitor's browser, or force one: `en`, `fr`, `es`, `pt`, `zh`, `ar`, `hi`, `ur`, `ru`.
* `theme` *(optional, default: `light`)* — `light` or `dark`.
* `nocache` *(optional, default: `1`)* — set to `0` to allow the browser to cache the `.egf` package.

= Example =

`[egf_reader game="https://your-site.com/wp-content/uploads/2025/04/my-game.egf" lang="auto" theme="light"]`

== Installation ==

1. Upload the `shakvaro-egf-reader-shortcode` folder to the `/wp-content/plugins/` directory, or install the plugin through the WordPress Plugins screen.
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Upload an `.egf` file to your **Media Library** and copy its URL.
4. Insert the shortcode into any post or page:
`[egf_reader game="https://your-site.com/wp-content/uploads/game.egf"]`

== Frequently Asked Questions ==

= What is an EGF file? =

EGF (Educational Game Format) 1.1 is an open package format for interactive games. An `.egf` file is a zipped bundle containing the game's scenes, assets, and metadata.

= Does the plugin send data to any external service? =

No. The reader runs entirely in the visitor's browser and loads the `.egf` file from your own server (or wherever you host it). No analytics, tracking, or third-party requests are made by the plugin.

= The shortcode shows "missing game attribute" — why? =

The `game` attribute is required and must point to the URL of your `.egf` file. Example:
`[egf_reader game="https://your-site.com/wp-content/uploads/game.egf"]`

= WordPress won't let me upload my .egf file. =

Activating the plugin whitelists the `.egf` extension in the Media Library. If you still see a "Sorry, this file type is not permitted for security reasons" error, your host may have additional restrictions — check with your hosting provider.

= Can I embed more than one game on the same page? =

Yes. Each shortcode instance gets its own unique container and player state.

== Screenshots ==

1. The reader rendered inside a WordPress page via the `[egf_reader]` shortcode.
2. Built-in "About the game" modal showing game metadata.
3. Settings modal — volume, theme, and language controls.

== Changelog ==

= 1.0.1 =
* First public release on WordPress.org.
* Renamed plugin to "Shakvaro EGF Reader Shortcode" to clarify no affiliation with the EGF project.
* Replaced `time()`-based asset cache-busting with a proper plugin version constant.
* Added full plugin header (License, Text Domain, Requires PHP, Requires at least, Tested up to).
* Added text domain and made all user-facing strings translatable.
* Refactored template output to escape every dynamic value at the point of echo.

== Upgrade Notice ==

= 1.0.1 =
First public release — adds proper versioning, i18n, and WordPress.org compliance.
