Commit Graph

22 Commits

Author SHA1 Message Date
jacob1
e55fc8703a
The squirrel infestation problem is mostly resolved
This reverts commits 5e8a28b946, e8c24e7e23, e8c24e7e23
2024-04-01 19:45:14 -04:00
jacob1
a53595ce68
coolcats.patch (patch courtesy of Simon) 2024-03-31 11:20:08 -04:00
jacob1
f4b836deb1
draw air before "beforesimdraw" event is fired, so that graphics work in velocity / pressure display modes 2024-02-09 23:37:12 -05:00
Tamás Bálint Misius
8e6faddd2f
Sanitize the Lua API
Mostly in terms of consistency of spelling (o/ou, z/s, upper/lowercase), placement (which table a function/variable is in), and getter/setter functionality (a ton of settings weren't possible to query). All of this is done, or at least is intended to be done, in a backwards-compatible manner; code that worked without errors in 97.0 should work correctly from now on also.

Also punt off duplicated and deprecated features to eventcompat.lua, renamed to just compat.lua, where they are more concisely implemented and more maintainable than on the C++ side.

Note that this means that functionality added since 97.0 is not necessarily preserved, and also that code that worked with errors may or may not keep working with errors, and it highly likely will not produce the same errors. In the future, errors coming from compat.lua should be attempted to be resolved first and foremost by migrating user code to new APIs.

List of notable, included, but not entirely relevant changes, which should probably have been done in separate commits:

 - add an enum for simulation deco spaces, there still are a few things that need such enums though
 - move clamping to Brush::SetRadius, meaning that nothing can set bogus brush sizes from now on, not even Lua
 - have LuaLuna install constructor functions in the interface table, rather than pollute _G with equivalent callable tables

The old APIs now work in accordance with existing documentation on the Wiki, though they retain weird unintended behaviour, such as accepting fewer arguments than documented. I also intend to give new APIs a thorough look later, and possibly organize C++-side code into separate TUs based on which API table it implements.

A list list of API changes follows. "status" is to be interpreted thus:

 - added: new API, the "related" API may be the limited functionality deprecated equivalent the new one is meant to extend
 - deprecated: retained for compatibility (see above), implemented in compat.lua via the "related" API, possibly meant to be removed from existing documentation, or at least very visibly marked deprecated
 - aliases: retained for compatibility (see above), implemented in compat.lua as an alias to the "related" API, possibly meant to be removed from existing documentation, or at least very visibly marked deprecated
 - renamed: not retained for compatibility because it was added after 97.0, the replacement is the "related" API
 - removed: no replacement available, see "note" for reason
 - unchanged: unchanged but noteworthy

 name                      | status     | related                 | note
---------------------------|------------|-------------------------|--------------
 Button                    | deprecated | ui.button               |
 Checkbox                  | deprecated | ui.checkbox             |
 Label                     | deprecated | ui.label                |
 ProgressBar               | deprecated | ui.progressBar          |
 Slider                    | deprecated | ui.slider               |
 Textbox                   | deprecated | ui.textbox              |
 Window                    | deprecated | ui.window               |
 bz2.COMPRESS_LIMIT        | added      | bz2.compressLimit       | identical
 bz2.COMPRESS_NOMEM        | added      | bz2.compressNomem       | identical
 bz2.DECOMPRESS_BAD        | added      | bz2.decompressBad       | identical
 bz2.DECOMPRESS_EOF        | added      | bz2.decompressEof       | identical
 bz2.DECOMPRESS_LIMIT      | added      | bz2.decompressLimit     | identical
 bz2.DECOMPRESS_NOMEM      | added      | bz2.decompressNomem     | identical
 bz2.DECOMPRESS_TYPE       | added      | bz2.decompressType      | identical
 bz2.compressLimit         | deprecated | bz2.COMPRESS_NOMEM      |
 bz2.compressNomem         | deprecated | bz2.COMPRESS_LIMIT      |
 bz2.compressOk            | removed    |                         | bz2.compress never actually returned this
 bz2.decompressBad         | deprecated | bz2.DECOMPRESS_NOMEM    |
 bz2.decompressEof         | deprecated | bz2.DECOMPRESS_LIMIT    |
 bz2.decompressLimit       | deprecated | bz2.DECOMPRESS_TYPE     |
 bz2.decompressNomem       | deprecated | bz2.DECOMPRESS_BAD      |
 bz2.decompressOk          | removed    |                         | bz2.decompress never actually returned this
 bz2.decompressType        | deprecated | bz2.DECOMPRESS_EOF      |
 elem.FLAG_MOVABLE         | deprecated | sim.FLAG_MOVABLE        |
 elem.FLAG_PHOTDECO        | deprecated | sim.FLAG_PHOTDECO       |
 elem.FLAG_SKIPMOVE        | deprecated | sim.FLAG_SKIPMOVE       |
 elem.FLAG_STAGNANT        | deprecated | sim.FLAG_STAGNANT       |
 elem.PROP_DRAWONCTYPE     | deprecated | 0                       |
 elem.ST_GAS               | deprecated | 0                       |
 elem.ST_LIQUID            | deprecated | 0                       |
 elem.ST_NONE              | deprecated | 0                       |
 elem.ST_SOLID             | deprecated | 0                       |
 elem.getByName            | added      | tpt.element             | only converts names to IDs
 evt.AFTERSIM              | added      | evt.aftersim            | identical
 evt.AFTERSIMDRAW          | added      | evt.aftersimdraw        | identical
 evt.BEFORESIM             | added      | evt.beforesim           | identical
 evt.BEFORESIMDRAW         | added      | evt.beforesimdraw       | identical
 evt.BLUR                  | added      | evt.blur                | identical
 evt.CLOSE                 | added      | evt.close               | identical
 evt.KEYPRESS              | added      | evt.keypress            | identical
 evt.KEYRELEASE            | added      | evt.keyrelease          | identical
 evt.MOUSEDOWN             | added      | evt.mousedown           | identical
 evt.MOUSEMOVE             | added      | evt.mousemove           | identical
 evt.MOUSEUP               | added      | evt.mouseup             | identical
 evt.MOUSEWHEEL            | added      | evt.mousewheel          | identical
 evt.TEXTEDITING           | added      | evt.textediting         | identical
 evt.TEXTINPUT             | added      | evt.textinput           | identical
 evt.TICK                  | added      | evt.tick                | identical
 evt.aftersim              | deprecated | evt.AFTERSIM            |
 evt.aftersimdraw          | deprecated | evt.AFTERSIMDRAW        |
 evt.beforesim             | deprecated | evt.BEFORESIM           |
 evt.beforesimdraw         | deprecated | evt.BEFORESIMDRAW       |
 evt.blur                  | deprecated | evt.BLUR                |
 evt.close                 | deprecated | evt.CLOSE               |
 evt.getModifiers          | added      | evt.getmodifiers        | identical
 evt.getmodifiers          | deprecated | evt.getModifiers        |
 evt.keypress              | deprecated | evt.KEYPRESS            |
 evt.keyrelease            | deprecated | evt.KEYRELEASE          |
 evt.mousedown             | deprecated | evt.MOUSEDOWN           |
 evt.mousemove             | deprecated | evt.MOUSEMOVE           |
 evt.mouseup               | deprecated | evt.MOUSEUP             |
 evt.mousewheel            | deprecated | evt.MOUSEWHEEL          |
 evt.textediting           | deprecated | evt.TEXTEDITING         |
 evt.textinput             | deprecated | evt.TEXTINPUT           |
 evt.tick                  | deprecated | evt.TICK                |
 ren.FIRE_SPARK            | added      |                         | was missing
 ren.colourMode            | deprecated | ren.colorMode           |
 ren.debugHUD              | deprecated | ren.debugHud            |
 ren.decorations           | added      | tpt.decorations_enable  | works with booleans
 ren.fireSize              | added      | tpt.setfire             | also a getter, takes intensity only
 ren.hud                   | added      | tpt.hud                 | works with booleans
 ren.useDisplayPreset      | added      | tpt.display_mode        | identical
 sim.AIR_NOUPDATE          | added      | sim.AIR_NO_UPDATE       | identical
 sim.AIR_NO_UPDATE         | renamed    | sim.AIR_NOUPDATE        |
 sim.AIR_PRESSUREOFF       | added      | sim.AIR_PRESSURE_OFF    | identical
 sim.AIR_PRESSURE_OFF      | renamed    | sim.AIR_PRESSUREOFF     |
 sim.AIR_VELOCITYOFF       | added      | sim.AIR_VELOCITY_OFF    | identical
 sim.AIR_VELOCITY_OFF      | renamed    | sim.AIR_VELOCITYOFF     |
 sim.BRUSH_CIRCLE          | added      | sim.CIRCLE_BRUSH        | identical
 sim.BRUSH_NUM             | renamed    | sim.NUM_DEFAULTBRUSHES  |
 sim.BRUSH_SQUARE          | added      | sim.SQUARE_BRUSH        | identical
 sim.BRUSH_TRIANGLE        | added      | sim.TRI_BRUSH           | identical
 sim.CIRCLE_BRUSH          | renamed    | sim.BRUSH_CIRCLE        |
 sim.FLAG_MOVABLE          | added      | elem.FLAG_MOVABLE       | identical
 sim.FLAG_PHOTDECO         | added      | elem.FLAG_PHOTDECO      | identical
 sim.FLAG_SKIPMOVE         | added      | elem.FLAG_SKIPMOVE      | identical
 sim.FLAG_STAGNANT         | added      | elem.FLAG_STAGNANT      | identical
 sim.MAX_PARTS             | added      | sim.NPART               | identical
 sim.NPART                 | renamed    | sim.MAX_PARTS           |
 sim.NUM_AIRMODES          | added      | sim.NUM_AIR_MODES       | identical
 sim.NUM_AIR_MODES         | renamed    | sim.NUM_AIRMODES        |
 sim.NUM_BRUSHES           | added      |                         | specifies the range of valid ui.brushID inputs
 sim.NUM_DEFAULTBRUSHES    | added      | sim.BRUSH_NUM           | identical
 sim.NUM_EDGEMODES         | added      | sim.NUM_EDGE_MODES      | identical
 sim.NUM_EDGE_MODES        | renamed    | sim.NUM_EDGEMODES       |
 sim.NUM_GRAVMODES         | added      | sim.NUM_GRAV_MODES      | identical
 sim.NUM_GRAV_MODES        | renamed    | sim.NUM_GRAVMODES       |
 sim.NUM_PARTS             | deprecated | sim.partCount           |
 sim.NUM_WALLS             | added      |                         | specifies the range of valid sim.wallMap inputs
 sim.SQUARE_BRUSH          | renamed    | sim.BRUSH_SQUARE        |
 sim.TRI_BRUSH             | renamed    | sim.BRUSH_TRIANGLE      |
 sim.ambientHeatSim        | added      | tpt.ambient_heat        | works with booleans
 sim.canMove               | added      | sim.can_move            | identical
 sim.can_move              | deprecated | sim.canMove             |
 sim.decoColour            | deprecated | sim.decoColor           |
 sim.decoSpace             | added      | tpt.decoSpace           | identical, but a function
 sim.elecMap               | added      | tpt.set_elecmap         | also a getter
 sim.ensureDeterminism     | unchanged  |                         | undocumented
 sim.fanVelocityX          | added      | tpt.set_wallmap         | also a getter, sets fan velocity separately
 sim.fanVelocityY          | added      | tpt.set_wallmap         | also a getter, sets fan velocity separately
 sim.frameRender           | added      | sim.framerender         | identical
 sim.framerender           | deprecated | sim.frameRender         |
 sim.golSpeedRatio         | added      | sim.gspeed              | identical
 sim.gravMap               | deprecated | various                 |
 sim.gravityField          | added      | sim.graMap              | gravity simulation output
 sim.gravityMass           | added      | sim.graMap              | also a getter, gravity simulation input
 sim.gspeed                | deprecated | sim.golSpeedRatio       |
 sim.hash                  | unchanged  |                         | undocumented
 sim.heatSim               | added      | tpt.heat                | works with booleans
 sim.neighbours            | deprecated | sim.neighbors           |
 sim.newtonianGravity      | added      | tpt.newtonian_gravity   | works with booleans
 sim.partCount             | added      | tpt.NUM_PARTS           | identical, but a function
 sim.partNeighbours        | deprecated | see sim.partNeighbors   |
 sim.paused                | added      | tpt.set_pause           | works with booleans
 sim.randomSeed            | added      | sim.randomseed          | identical, undocumented
 sim.randomseed            | renamed    | sim.randomSeed          | undocumented
 sim.resetGravityField     | added      | tpt.reset_gravity_field | identical
 sim.resetSpark            | added      | tpt.reset_spark         | identical
 sim.resetVelocity         | added      | tpt.reset_velocity      | identical
 sim.wallMap               | added      | tpt.set_wallmap         | also a getter, doesn't set fan velocity
 sim.waterEqualisation     | deprecated | sim.waterEqualization   |
 sim.waterEqualization     | unchanged  |                         | still works with ints, not worth the trouble
 socket.getTime            | added      | socket.gettime          | identical
 socket.gettime            | deprecated | socket.getTime          |
 tpt.active_menu           | deprecated | ui.activeMenu           |
 tpt.ambient_heat          | deprecated | sim.ambientHeatSim      |
 tpt.brushID               | deprecated | ui.brushID              |
 tpt.brushx                | deprecated | ui.brushRadius          |
 tpt.brushy                | deprecated | ui.brushRadius          |
 tpt.create                | deprecated | various                 |
 tpt.debug                 | added      | tpt.setdebug            | identical
 tpt.decoSpace             | deprecated | sim.decoSpace           |
 tpt.decorations_enable    | deprecated | ren.decorations         |
 tpt.delete                | deprecated | various                 |
 tpt.display_mode          | deprecated | ren.useDisplayPreset    |
 tpt.drawCap               | added      | tpt.setdrawcap          | identical
 tpt.drawline              | deprecated | gfx.drawLine            |
 tpt.drawpixel             | deprecated | gfx.drawPixel           |
 tpt.drawrect              | deprecated | gfx.drawRect            |
 tpt.drawtext              | deprecated | gfx.drawText            |
 tpt.el                    | deprecated | various                 |
 tpt.element               | deprecated | various                 |
 tpt.element_func          | deprecated | elem.property           |
 tpt.eltransition          | deprecated | various                 |
 tpt.fillrect              | deprecated | gfx.fillRect            |
 tpt.fpsCap                | added      | tpt.setfpscap           | identical
 tpt.getPartIndex          | deprecated | various                 |
 tpt.getUserName           | added      | tpt.get_name            | identical
 tpt.get_clipboard         | deprecated | plat.clipboardCopy      |
 tpt.get_elecmap           | deprecated | sim.elecMap             |
 tpt.get_name              | deprecated | tpt.getUserName         |
 tpt.get_numOfParts        | deprecated | sim.partCount           |
 tpt.get_property          | deprecated | sim.partProperty        |
 tpt.get_wallmap           | deprecated | sim.wallMap             |
 tpt.graphics_func         | deprecated | elem.property           |
 tpt.heat                  | deprecated | sim.heatSim             |
 tpt.hud                   | deprecated | ren.hud                 |
 tpt.menu_enabled          | deprecated | ui.menuEnabled          |
 tpt.mousex                | deprecated | ui.mousePosition        |
 tpt.mousey                | deprecated | ui.mousePosition        |
 tpt.newtonian_gravity     | deprecated | sim.newtonianGravity    |
 tpt.next_getPartIndex     | deprecated | various                 |
 tpt.num_menus             | deprecated | ui.numMenus             |
 tpt.parts                 | deprecated | various                 |
 tpt.perfectCircleBrush    | deprecated | ui.perfectCircleBrush   |
 tpt.reset_gravity_field   | deprecated | sim.resetGravityField   |
 tpt.reset_spark           | deprecated | sim.resetSpark          |
 tpt.reset_velocity        | deprecated | sim.resetVelocity       |
 tpt.selecteda             | deprecated | ui.activeTool           |
 tpt.selectedl             | deprecated | ui.activeTool           |
 tpt.selectedr             | deprecated | ui.activeTool           |
 tpt.selectedreplace       | deprecated | ui.activeTool           |
 tpt.set_clipboard         | deprecated | plat.clipboardPaste     |
 tpt.set_console           | deprecated | ui.console              |
 tpt.set_elecmap           | deprecated | sim.elecMap             |
 tpt.set_gravity           | deprecated | sim.gravityMass         |
 tpt.set_pause             | deprecated | sim.paused              |
 tpt.set_pressure          | deprecated | sim.pressure            |
 tpt.set_property          | deprecated | sim.partProperty        |
 tpt.set_wallmap           | deprecated | sim.wallMap             |
 tpt.setdebug              | deprecated | tpt.debug               |
 tpt.setdrawcap            | deprecated | tpt.drawCap             |
 tpt.setfire               | deprecated | ren.fireSize            |
 tpt.setfpscap             | deprecated | tpt.fpsCap              |
 tpt.setwindowsize         | deprecated | ui.windowSize           |
 tpt.start_getPartIndex    | deprecated | various                 |
 tpt.textwidth             | deprecated | gfx.textSize            |
 tpt.toggle_pause          | deprecated | sim.paused              |
 tpt.watertest             | deprecated | sim.waterEqualization   |
 ui.MOUSEUP_BLUR           | added      | ui.MOUSE_UP_BLUR        | identical
 ui.MOUSEUP_DRAWEND        | added      | ui.MOUSE_UP_DRAW_END    | identical
 ui.MOUSEUP_NORMAL         | added      | ui.MOUSE_UP_NORMAL      | identical
 ui.MOUSE_UP_BLUR          | deprecated | ui.MOUSEUP_BLUR         |
 ui.MOUSE_UP_DRAW_END      | deprecated | ui.MOUSEUP_DRAWEND      |
 ui.MOUSE_UP_NORMAL        | deprecated | ui.MOUSEUP_NORMAL       |
 ui.NUM_TOOLINDICES        | added      |                         | specifies the range of valid ui.activeTool inputs
 ui.activeMenu             | added      | tpt.active_menu         | identical
 ui.activeTool             | added      | tpt.selectedl, ...      | identical, but a function
 ui.brushID                | added      | tpt.brushID             | identical, but a function
 ui.brushRadius            | added      | tpt.brushx, tpt.brushy  | identical, but a function
 ui.button                 | added      | Slider:new              | standalone function
 ui.checkbox               | added      | Textbox:new             | standalone function
 ui.console                | added      | tpt.set_console         | works with booleans
 ui.label                  | added      | ProgressBar:new         | standalone function
 ui.menuEnabled            | added      | tpt.menu_enabled        | identical
 ui.mousePosition          | added      | tpt.mousex, tpt.mousey  | identical, but a function
 ui.numMenus               | added      | tpt.num_menus           | identical
 ui.perfectCircleBrush     | added      | tpt.perfectCircleBrush  | identical
 ui.progressBar            | added      | Window:new              | standalone function
 ui.slider                 | added      | Button:new              | standalone function
 ui.textbox                | added      | Label:new               | standalone function
 ui.window                 | added      | Checkbox:new            | standalone function
 ui.windowSize             | added      | tpt.setwindowsize       | also a getter
2024-01-21 11:30:24 +01:00
Tamás Bálint Misius
0f1218df0c
Sort out constness of Simulation and Renderer in graphics functions
Mostly. They are now const but only in graphics functions called from secondary Renderers. The primary (main thread) Renderer still allows graphics functions to mutate Simulation; this is required for correct in-PIPE rendering of custom elements.
2023-12-09 16:37:45 +01:00
Tamás Bálint Misius
cfa9fe568d
Move graphics cache to SimulationData 2023-12-09 09:51:41 +01:00
Tamás Bálint Misius
ef04068a85
Make find mode work with the PROP tool 2023-09-20 07:16:28 +02:00
Tamás Bálint Misius
d8acdfb576
Fix various warnings that had piled up 2023-05-12 19:25:41 +02:00
Tamás Bálint Misius
60a7ce1aae
Use _rgb literals where possible 2023-04-30 14:22:56 +02:00
Tamás Bálint Misius
410dc71f42
Fix some deprecation warnings
Namely:

 - [[deprecated("Use DrawPixel/BlendPixel")]]
 - [[deprecated("Use DrawLine/BlendLine")]]
 - [[deprecated("Use DrawRect/BlendRect")]]
 - [[deprecated("Use DrawFilledRect/BlendFilledRect")]]
2023-04-30 14:06:54 +02:00
Tamás Bálint Misius
9fbb780728
Fix some deprecation warnings
Namely:

 - [[deprecated("Use BlendChar")]]
 - [[deprecated("Use AddChar")]]
 - [[deprecated("Use XorPixel")]]
 - [[deprecated("Use AddPixel")]]
 - [[deprecated("Use XorLine")]]
 - [[deprecated("Use XorDottedRect")]]
 - [[deprecated("Use XorImage")]]
 - [[deprecated("Use BlendEllipse")]]
 - [[deprecated("Use BlendFilledEllipse")]]
 - [[deprecated("Use DrawFilledRect (beware off by 1)")]]
2023-04-30 11:27:58 +02:00
Tamás Bálint Misius
2960e0f58f
Fix some deprecation warnings
Namely:

 - [[deprecated("Use operator+(Vec2)")]]
 - [[deprecated("Use operator-(Vec2)")]]
 - [[deprecated("Use video")]]
 - [[deprecated("Use persistentVideo")]]
 - [[deprecated("Use wrapVideo")]]
2023-04-29 14:44:27 +02:00
Tamás Bálint Misius
8f10210c77
Fix various unintended layout changes since 97.0
Also fix a few unused variable warnings.
2023-04-29 13:18:32 +02:00
catsoften
a715f5d71a Use RGB for constants and gradients, other misc changes 2023-04-16 22:13:39 +02:00
catsoften
bc085705a8 Remove deprecated PIXPACK/RGB/R/G/B functions 2023-04-16 22:13:39 +02:00
mniip
b26a1b4a88 VideoBuffer pointer correctness 2023-04-05 14:52:20 +02:00
mniip
7f84887f6d Refactor things referencing VideoBuffer internals 2023-04-05 02:30:05 +02:00
mniip
e5af4dab68 Refactor resize-related code 2023-04-05 02:30:05 +02:00
mniip
caab738184 Refactor raster draw methods 2023-04-05 02:29:35 +02:00
mniip
e93db9c06a RasterDrawMethods CRTP, PlaneAdapters in VideoBuffer, Graphics, and Renderer 2023-04-05 02:29:35 +02:00
Tamás Bálint Misius
4f0c365e05
Preprocessor purge round 19: Split and minimize usage of Config.h
Also mostly banish it from other headers, and shuffle standard header includes to minimize cross-contamination between headers.
2023-01-27 09:27:32 +01:00
Tamás Bálint Misius
f0ffa2eeb1
Preprocessor purge round 15: FONTEDITOR, RENDERER 2023-01-27 09:26:40 +01:00