Commit graph

1061 commits

Author SHA1 Message Date
Claude
20458e39e2
Add external API integration for wiki/web UI synchronization
This commit adds a comprehensive external API system that allows external tools
(wikis, web UIs, etc.) to control and synchronize with Fantasy Map Generator.

New Features:
- External API Bridge (modules/external-api.js)
  - Event-driven architecture with EventEmitter
  - Map lifecycle control (create, load, save)
  - Data access methods (rivers, cultures, states, burgs)
  - Data mutation methods with auto-redraw
  - Export support (SVG, PNG, JSON)
  - Change detection with automatic event emission

- PostMessage Communication Layer
  - Auto-enables when FMG is embedded in iframe
  - Bidirectional message passing
  - Request/response pattern with promise support
  - Automatic event forwarding to parent window

- REST API Server (api-server/)
  - Express.js server with full CRUD operations
  - WebSocket support via Socket.IO for real-time updates
  - File upload support for map and CSV import
  - In-memory storage (can be replaced with database)
  - CORS enabled for cross-origin requests
  - Comprehensive endpoints for all map data

- Client Library (api-server/client.js)
  - Simple JavaScript client for REST API
  - Promise-based async methods
  - Works in browser and Node.js

- Demo Pages (demos/)
  - PostMessage integration demo with full UI
  - REST API demo with interactive testing
  - WebSocket demo for real-time events

- Documentation
  - Comprehensive integration guide (EXTERNAL_API_INTEGRATION.md)
  - API reference with TypeScript interfaces
  - Multiple integration examples
  - Troubleshooting guide

Integration Methods:
1. PostMessage Bridge - For iframe embedding
2. REST API - For server-side integration
3. Direct JavaScript API - For same-origin apps

Use Cases:
- Wiki pages that need to display and control maps
- Web UIs that want to edit map data
- External tools that need to sync with FMG
- Real-time collaborative map editing
- Batch operations and automation

Technical Details:
- Zero dependencies for external-api.js (pure JS)
- Auto-initializes on DOMContentLoaded
- Throttled change detection (500ms debounce)
- Deep cloning for data access (prevents mutations)
- Error handling throughout
- Version tagged (v1.0.0)

Updated Files:
- index.html: Added script tag to load external-api module

All APIs are backward compatible and don't affect existing functionality.
2025-11-04 21:43:06 +00:00
Leie Sistal
dede314c94 Fully load river from save files
Correctly Load from save file now
2024-01-16 16:43:05 +01:00
leie.sistal@gmail.com
69a9b6e18e implement load of river out of save map 2024-01-15 22:58:30 +01:00
leie.sistal@gmail.com
ded115f86a update rivers-overview.js 2024-01-13 21:12:13 +01:00
leie_sistal@yahoo.fr
9b30da95d2 rough implementation of empty function to load csv for rivers 2024-01-11 23:28:36 +01:00
Azgaar
845dc893d2 fix: #1026, remove mask-image on export 2023-12-10 16:52:47 +04:00
Azgaar
52e3088763 fix: cultures editor - don't overwrite border color on color change 2023-12-05 02:45:55 +04:00
Azgaar
9f348b70d6 fix: namesbase editor - sanitize base name on load 2023-12-05 02:31:38 +04:00
Azgaar
da5c0e9493 fix: #1024, regenerate burgs - ignore removed states 2023-12-05 02:24:36 +04:00
Azgaar
24ecd1dbf7
Vignette layer (#1021)
* feat: vignette (non-editable yet)

* feat: vignette style control

* feat: vignette layer

* feat: vignette - save styles

* feat: vignette - style presets

* feat: vignette - style presets

* feat: vignette - style presets

---------

Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
2023-11-28 02:26:55 +04:00
Azgaar
537abf1223 feat: supporters update 2023-11-25 15:04:29 +04:00
Azgaar
c3cfffec87 fix #1020: recreate texture if it's missing 2023-11-22 20:35:55 +04:00
Azgaar
3353789146 fix: dropbox sharing maps 2023-11-22 00:23:01 +04:00
Azgaar
5ec59da7b7 fix: don't redraw removed scaleBar 2023-11-21 04:39:54 +04:00
Azgaar
433152db06 fix: move scaleBar to the corner of svg export 2023-11-19 20:10:42 +04:00
Azgaar
20b09e8634 feat: fitMapToScreen on canvas site restoring 2023-11-19 17:12:09 +04:00
Azgaar
54721f2100 chore: clean up 2023-11-19 17:08:10 +04:00
Azgaar
a1f70afd57
Fit map to screen size (#1018)
* feat: fit map to screen size

* chore: pump version

---------

Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
2023-11-19 17:03:48 +04:00
Azgaar
a349d40868 fix: don't update texture if there is no texture 2023-11-19 16:53:10 +04:00
Azgaar
ada39b47ad
Fix: rework texture data format (#1017)
* fix: rework texture save format

* refactor: move textures to a local folder

* fix: export texture

* fix: don't export empty texture

* chore: pump version

* fix: rescale water mask on screen size change

---------

Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
2023-11-19 14:43:56 +04:00
Azgaar
958a2c6ef8
Custom heightmap color scheme (#1013)
* feat: custom heightmap color scheme

* feat: custom heightmap color scheme - add shceme on load

---------

Co-authored-by: Azgaar <azgaar.fmg@yandex.com>
2023-11-18 16:34:41 +04:00
Azgaar
778bea15ee fix: json-export vertices data 2023-11-18 14:22:51 +04:00
Azgaar
9ad08c80c6 feat: improve 3d view 2023-11-11 22:40:48 +04:00
Azgaar
2fd58e9d35 feat: click on burgs count to open the overview screen 2023-11-11 21:05:59 +04:00
Azgaar
9332eb7b38 fix: notes to update on deletion 2023-11-11 18:02:53 +04:00
Azgaar
98c971b3c4 chore: supporters update 2023-11-07 13:49:39 +04:00
Azgaar
42671053d3 fix: add missing religion name variants 2023-11-06 00:13:11 +04:00
Azgaar
8101e75f3d hotfix: define color scheme on heightmap edit 2023-11-06 00:04:53 +04:00
Azgaar
e654dbb8a5 feat: add style preset, add heighmap color schemes 2023-11-05 16:48:26 +04:00
Azgaar
f705c2d37d feat: add new emblem charges 2023-10-30 22:27:25 +04:00
Azgaar
da06dba872 feat: add link to Chinese localization 2023-10-18 13:34:19 +04:00
Azgaar
13449447ba fix: Chrome hides layers with dropShadow... 2023-09-24 02:56:19 +04:00
Azgaar
fbe5f4ad55 feat: random encounters 2023-09-24 00:45:09 +04:00
Azgaar
b2241b1cd3 feat: supporters update 2023-09-12 02:22:38 +04:00
Azgaar
e346c4bd84 feat: add all grid data to JSON export 2023-09-12 02:19:07 +04:00
Azgaar
8feda7c15d chore: supporters update 2023-08-23 01:32:28 +04:00
Azgaar
168656c864 fix: #987, #988 2023-08-16 11:56:36 +04:00
Azgaar
2e0a74f34d feat: add reference to Armoria and Deorum 2023-08-15 17:36:25 +04:00
Azgaar
26f48a48fd
Compress save file (#986)
* Adding gzip compression for improving storage use and backward compatibility. (#984)

* Basic gzip an gunzip on load and save.

* refactor file save type to .gz and update the data in ui.

---------

Co-authored-by: Azgaar <maxganiev@yandex.com>

* refactor: cleanup, change wording

* feat: streamline saving options

* fix: fixes

---------

Co-authored-by: Efruz Yıldırır <30903352+yldrefruz@users.noreply.github.com>
2023-08-15 16:50:28 +04:00
Azgaar
5fba7d60f4 fix: check if coa is defined on auto-update 2023-08-15 12:02:39 +04:00
Azgaar
1da3f9d3ad fix: re-add textureImage if it has no id 2023-08-14 15:24:59 +04:00
Azgaar
20c46e181a fix: check for selection size 2023-08-14 14:39:11 +04:00
Azgaar
c3a385b2c9 hotfix: texture on version update 2023-08-11 19:16:30 +04:00
Azgaar
454fc9ca3e fix: remove texture hiding style 2023-08-11 19:09:00 +04:00
Azgaar
95503ebf38 hotfix: filename conflict 2023-08-11 19:03:21 +04:00
Azgaar
87599d1530
State labels: new label placing algorithm (#977)
* feat: draw state labels start

* feat: update old .map files

* chore: update version hash

* fear: add change to the user's changelog
2023-08-11 18:56:42 +04:00
Azgaar
1bb90251cd feat: move biomes code to a separate module, reduce deserts amount 2023-08-11 14:31:08 +04:00
Azgaar
71cc739b4d fix: don't take outdated values from .map file on load 2023-08-09 18:18:29 +04:00
Azgaar
b0887b14d6 fix: border layer on/off detection on load 2023-08-08 17:20:08 +04:00
Azgaar
f7cb157cf3 fix: textureImage is not defined 2023-08-08 17:07:10 +04:00