summaryrefslogtreecommitdiff
path: root/lib/Tiled.hs (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-03-19separate tiled modules out into own packagestuebinm1-395/+0
2022-03-19switch to universum preludestuebinm1-16/+10
also don't keep adjusted maps around if not necessary
2022-03-19sprinkle some NFData everywherestuebinm1-13/+16
(also some evaluateNF, leading to slightly less memory usage)
2021-12-23some people define tilesets without images???stuebinm1-1/+1
2021-12-18fixed parsing of tiled objectsstuebinm1-23/+10
(points behave slightly differntly than I thought)
2021-12-16fixed & removed a bunch of old TODOsstuebinm1-1/+0
2021-12-14audioVolumne is of type float, not intstuebinm1-12/+24
also, float properties exist, apparently
2021-12-13changes to tiled map formatstuebinm1-2/+4
(found by running through rc3 2021 map submissions and looking at what failed)
2021-12-12handle text objects in objectgroup layersstuebinm1-6/+16
2021-12-04lots of code reorganising and some deduplicationstuebinm1-50/+1
it was kinda getting messy in places. Also found some accidental isomorphisms between types, so these are now only one type because the consequences were getting silly.
2021-12-04refuse doubled namesstuebinm1-0/+13
2021-12-02collect badges from object layersstuebinm1-35/+73
this includes a halfway-reasonable parsing of object layers, as well as some monad plumbing to get them all in the right place.
2021-11-17make map parser work with more mapsstuebinm1-5/+25
I found yet more properties that weren't really documented or weren't marked as optional, hurray!
2021-11-17map format: turns out more things are optionalstuebinm1-6/+6
the unhelpfulness of the spec is slowly starting to grate … Anyways, apparently a lot more properties don't have to be present, and you find out by finding maps somewhere that work but currently fail the parser.
2021-11-14config options: implement script-related optionsstuebinm1-0/+5
2021-11-14Functional jitsiRoomAdminTag adjustmentstuebinm1-0/+9
also yet another typeclass™, because why not?
2021-11-10remove dead codestuebinm1-36/+9
(also fix some hlints) This removes some code that was apparently dead and I never noticed. I only noticed now since it wouldn't work with the newer versions of Aeson anymore.
2021-11-09first example of a map adjustmentstuebinm1-1/+10
this also includes some more monad plumbing, and an option for the linter to actually write things out again. Some of the previous commit was reverted a bit since it turned out to be stupid, but overall it was suprisingly easy once I got around to it, so yay! i guess Also includes a fairly silly example of how to use it.
2021-10-30yet more tiled propertiesstuebinm1-1/+5
2021-10-30also flipping tileset lint output structurestuebinm1-0/+2
2021-10-30added more keys to the Tiled formatstuebinm1-30/+51
(apparently, some of them aren't even in the spec, just the changelog!)
2021-10-30flipping the output map structurestuebinm1-3/+6
for now, just with layers. Instead of listing by layer (and giving lints multiple times), list by lint type (and list all layers in which this lint was applicable). This is a bit wonky for now, but readability of output is much better.
2021-10-30make aeson instances agree with themselvesstuebinm1-182/+69
This cleans up all the old rubble that came from the Tiled package I originally took from hackage. It now uses generics instead of implementing all the ToJSON and FromJSON instances by hand, and (deserialize . serialise) will now actually return a (semantically) equivalent json. It'll now also reject keys that it doesn't know, which required adding some in several places which the tiled package didn't know about (or which were introduced after it was originally written, dunno). Several more Maybes are required now, to represent the difference between e.g. empty lists and on set value, which does make the code slightly weirder in other places …
2021-10-30add tileset property lintingstuebinm1-1/+1
this reorganised the whole linting for tilesets somewhat; it's now very similar to that linting layers, and it may be possible to abstract some of the code away ...
2021-10-01rename to walintstuebinm1-18/+17
2021-09-30nicer json output which leaks less haskell namesstuebinm1-3/+6
2021-09-23very naïve handling of directoriesstuebinm1-15/+24
2021-09-20lint embedded tilesetsstuebinm1-2/+2
2021-09-20lint general map propertiesstuebinm1-2/+2
2021-09-19some properties require non-empty layersstuebinm1-2/+4
2021-09-19support for properties that aren't stringsstuebinm1-13/+29
apparently i couldn't read or something?
2021-09-18can collect dependencies!stuebinm1-2/+2
There's now a Lint type, which may be either a "true lint" (which is a Hint, which contains some message and level of severity), or a Depends, which indicates that this map depends on some ressource or other (and is otherwise treated as a special info Hint in all other cases)
2021-09-18type check propertiesstuebinm1-1/+25
/finally/ figured out that all properties just look like {name, value, type} so now that's abstracted away and Properties.hs doesn't look like javascript anymore
2021-09-16input options, output jsonstuebinm1-1/+1
input options are mostly dummies for now, but some work (e.g. --inpath and --json). Lints can now be optionally printed as json to be reasonably machine-readable (and the json can be pretty-printed to make it human-readable again …).
2021-09-16moving lots of code aroundstuebinm1-0/+0
(also renaming things now that concepts seem a bit clearer)