![Create React App Officially Deprecated Amid React 19 Compatibility Issues](https://cdn.sanity.io/images/cgdhsj6q/production/04fa08cf844d798abc0e1a6391c129363cc7e2ab-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
stormworks-screen-api
Advanced tools
Canvas-based JS/Typescript implementation of the Stormworks LUA screen API.
This library can be used to test and emulate controller designs outside of the game, as seen in Stormdev.
Install the package:
With npm:
$ npm i --save stormworks-screen-api
With yarn:
$ yarn add stormworks-screen-api
Create an API instance
You can allow the API to create a canvas instance internally:
const stormworksScreenApi = screenApi();
// Retrieve the canvas element, e.g to include it in the DOM:
const canvasElement = stormworksScreenApi.getCanvasElement();
Or create your own canvas and provide it as an argument:
const myCanvasElement = document.getElementById('my-canvas');
if (!myCanvasElement) {
throw new Error('Failed to find canvas element');
}
const stormworksScreenApi = screenApi({
canvas: myCanvasElement,
});
The screen API methods are isolated under the screen
property, which makes it easy to pass to an emulator context:
const stormworksScreenApi = screenApi();
const screen = stormworksScreenApi.screen;
screen.setColor(255, 0, 0, 255);
screen.drawLine(0, 0, 10, 10);
screen.drawRectF(10, 10, screen.getWidth() / 2, screen.getHeight() / 2);
This library aims to be as accurate as possible compared to the in-game implementation, however, no guarantees are made. If a decision needs to be made between accuracy and practicality, practicality will always win.
drawMap
Note that currently drawMap
and map-related methods are not fully implemented - calls to these methods will succeed without rendering anything to the canvas.
The screenApi
method accepts a series of optional properties, which can be used to further configure how the API works, and how it renders elements onto the canvas.
All top-level properties are optional:
const stormworksScreenApi = screenApi({
// Provide a Canvas element; if not provided, one will be created internally
canvas: myCanvasElement,
// If a canvas element is not provided, these dimensions will be used to create a new canvas:
dimensions: {
width: 480,
height: 320,
},
// Override the values returned by `getWidth` and `getHeight`, can be used for emulation trickery:
reportDimensions: {
width: 64,
height: 64,
},
// Settings used while rendering onto the canvas. Default values are shown here:
drawSettings: {
lineWidth: 1.4,
fontSize: 5,
fontFamily: "'Screen Mono', 'Lucida Console', Monaco, monospace",
fontCharDimensions: {
width: 4,
height: 5,
},
defaultColor: [255, 255, 255, 255] as Color,
circle: {
lineSegmentIntervalsByRadius: [0, 20, 28],
lineSegmentIntervals: [8, 12, 16],
},
map: {
grass: [255, 255, 255, 255],
land: [255, 255, 255, 255],
ocean: [255, 255, 255, 255],
sand: [255, 255, 255, 255],
shallows: [255, 255, 255, 255],
snow: [255, 255, 255, 255],
},
},
});
A kitchen-sink is provided to visually inspect changes during development:
$ yarn dev
This will launch your primary browser on a page with a canvas element. You can use your developer console to test out the API locally, through the provided exported api at window.S
, e.g:
const screen = window.S.screen;
screen.drawText(1, 1, 'Hello!');
Contributions are welcome! Please open tickets or - ideally - pull requests with your suggestions.
FAQs
JS implementation of the Stormworks screen API
The npm package stormworks-screen-api receives a total of 1 weekly downloads. As such, stormworks-screen-api popularity was classified as not popular.
We found that stormworks-screen-api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.