Uses a less "sharp" font. All the contents will be using Arial while
code blocks will use Consolas.
Co-authored-by: Tad Hardesty <tad@platymuus.com>
Add fallback font chains.
This PR adds in a configuration for the `hide_invisible` render pass,
to add extra types to it to forcibly hide. Configuration is as follows:
```toml
[map_renderer]
hide_invisible = [
"/obj/effect/mapping_helpers",
"/obj/effect/landmark",
"/obj/effect/spawner/random_spawners",
]
```
This PR also adds a new render pass, `only-wires-and-pipes`. This is
functionally a combination of `only-wires` and `only-pipes`, as you
currently cannot stack both the passes.
Co-authored-by: Tad Hardesty <tad@platymuus.com>
Fixes https://github.com/SpaceManiac/SpacemanDMM/issues/122
Fixes `x ? y : z = 0` being treated as `x ? y : (z = 0)` instead of
`(x ? y : z) = 0`.
The issue happened with any assignment operator, hopefully this change
is reasonable.
The changes for the language server are minimal. This will require
shipping version 2.0.0 of the debug server: use
https://github.com/willox/auxtools/releases/tag/v2.2.0
There are plenty of compiler features missing on the debug server's
end, but it is definitely more than usable so I want to get it
published. I plan on going a lot further this all of this, maybe we'll
even have hot loading one day.
Noticeable differences from actual BYOND are:
1. It only compiles expressions! This means no for loops, no if
statements, etc.
2. It lacks all static typing - the compiler has no access to type
definitions and will treat all `.` accesses as `:` accesses and
ignore the rules of const.
3. There are no implicit uses of `src`. This comes from the fact that
there is no static typing, so to access a field on `src` you have to
explicitly use `src.xyz` syntax.
4. Strings are lame. There is no interpolation support and the escape
sequences are super limited too.
5. Some built-in procs aren't supported, but most are. They'll
gracefully error if you try to use them.
6. No pre-processor.
For other limitations, just view the error list:
9ba328ef8c/src/compiler.rs (L45-L76)
tl;dr: relatively well-working debug console eval, watch eval, and
conditional breakpoints
I renamed the current `IndexKind` enum to `PropertyAccessKind` purely
based off of the fact that somewhere in the byond ref both procs and
vars are referred to as a datum's "properties" and I had no better name
ideas.
The checker treats conditional list accesses exactly the same as normal
ones. I was going to add some linting stuff for them but their expected
behaviour is completely up in the air at the moment.
I noticed that this was different from BYOND's behaviour where
`new x[y]` actually compiles as `(new x)[y]`. The same behaviour
applies for `new x?[y]` so I don't anticipate the code I am removing
being needed for that.
I confirmed that BYOND has been compiling it this way since at least
513.1490, so if it changed it was long ago.
[SpaceManiac] As far as I can tell, there was no BYOND change and this
code was wrong all along.
This only becomes a problem when stuff we haven't got control over
decides to output to stdin or stderr.
vgstation-coders/vgstation13#28789 shows (in the most recent responses)
that they're using an internet explorer plugin which outputs some debug
info to stderr and terminates it with some invalid utf-8 or something.
I don't think the details on that side are too important, we just need
to fix the next part: This makes the language server's pipe_output
close the stream which then makes auxtools panic when it tries writing
to said stream (because eprintln!() will panic in such a case.)
Auxtools could handle this better, but there's no reason for the
debugger to just stop piping output because it sees some wacky bytes.
Allows for `rgb()` with arguments of form
`[r,g,b|h,s,[v|l|y]],(a),(space)`
Also allows the full names of the arguments. Technically, BYOND
supports just the first letter so `halifax` works for `hue` but fuck
that.
Also now lints to see if the values are in the valid ranges.
Co-authored-by: Tad Hardesty <tad@platymuus.com>
It is much faster now, way less terrible blitting code.
---
SpaceManiac's benchmarks indicate about 9% speedup when rendering MetaStation with `--release` on.