A set of EmmyLua-style type annotations for the PlayDate Lua SDK, mainly intended for use with the Lua extension in VSCode. Most of the current state of this file is based on the SDK documentation.
Place playdate-type-annotations
as a git submodule or regular folder outside of your source
directory, and add the following to your .vscode/settings.json
file to have the sumneko Lua extension pick up the appropriate type annotations in your other source files.
"Lua.workspace.library": [
"$PLAYDATE_SDK_PATH",
"playdate-type-annotations"
],
You should not import any of these files in your project source code.
Keeping the playdate_type_annotations folder separate from your source
directory will ensure these files are not compiled into your .pdx file when running the pdc
command.
These EmmyLua-style type annotations are designed with sumneko.Lua's type annotation support in mind. See the sumneko.Lua wiki to learn more about how you can use these on your end.
The following examples show how you could create a custom Sprite class using these annotations:
---@class MySpriteClass : playdate.graphics.sprite
MySpriteClass = {} -- While the .extends() call below will add a global table entry, the VSCode extension really needs this to recognize that there is a table with that name.
class('MySpriteClass', {}).extends(playdate.graphics.sprite)
---@class mynamespace.MySpriteClass : playdate.graphics.sprite
mynamespace.MySpriteClass = {} -- While the .extends() call below will add a global table entry, the VSCode extension really needs this to recognize that there is a table with that name.
class('MySpriteClass', {}, mynamespace).extends(playdate.graphics.sprite)
Feel free to file issues or make Pull Requests. Where possible, please try to verify the types of your changes at runtime to verify accuracy when the SDK documentation is unclear.
Consider this file public domain; I made it for my own sake, and I'm happy to share it to help others in the community.