TIC-80 icon indicating copy to clipboard operation
TIC-80 copied to clipboard

Moonscript modules

Open 100xCode opened this issue 2 years ago • 2 comments

I have a project where I'm trying to make custom text! and textb! functions for drawing text with shadows and drawing text in boxes. I was trying to make modules for this job, researched how to make them, and then made a test module. I then made a project trying to require! the test module, but it didn't work. Here's some code overview of the problem:

File makeup:

[bunny]
 ...
[cart]
 ...
[projects]
 ...
[tests]
 companion.tic
 fruity.tic
[tic80.com]
 ...
demo carts...

Companion:

require "fruity"
fruity.printAFruit 3
export TIC = -> --just here for the ''function TIC...' isn't found :(' error

Fruity:

printAFruit (n) = ->
 a = {"apple","pear","banana","strawberry","orange"}
 a[n]--implicit return

export TIC = →

fruity = {:printAFruit}
fruity

I tried different versions of the require! function (require "fruity", require "tests.fruity", require "/tests/fruity",require "/tests/fruity.tic",require "tests/fruity", etc.), but nothing worked. It just gave this error:

[string "moonscript.lua"]:5401:attempt to index a nil value (global `io`)

Maybe it has to do with being unable to save things as .moon and only being able to save as .tic. Also, I'm on browser.

100xCode avatar Jun 24 '22 14:06 100xCode

TIC doesn't support functions like require, you have to write the code in one file.

nesbox avatar Jun 27 '22 05:06 nesbox

@100xCode there are also several bundling tools that you can integrate in your workflow: https://github.com/nesbox/TIC-80/wiki/tools#bundling

scambier avatar Jun 27 '22 08:06 scambier

Closing as asked and answered by nesbox.

Worth noting this might technically be possible in Moonscript - since it's just interpreted at runtime by Lua... so you could come up with a custom build system that wrote all your source into a huge blob... and then hack moonscript to supply your own "require" function that knows how to retrieve files from your huge binary blob... but that's a bit out of scope. :-)

Your cartridge might then technically be a Lua cartridge though.

joshgoebel avatar Dec 05 '22 01:12 joshgoebel