Commit Graph

506 Commits

Author SHA1 Message Date
Cracker1000
23af1042b4
Make PHOT change its wavelength upon colliding with charged LITH (#841)
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2022-05-04 22:34:23 +02:00
Tamás Bálint Misius
df7bbd3b8e
Prevent SaveRenderer from calling into Lua
Also clear SaveRenderer graphics cache along with the main Renderer's when needed, and revert to built-in element callbacks rather than nothing at all when assigning nil to a callback slot in Lua.
2022-02-23 22:22:10 +01:00
jacob1
477909d00f
Redo code that makes SOAP float on OIL
Rather than hacking velocity, do it directly through can_move. Add a special case to make it slowly float upwards, rather than immediate like most weight differences in TPT.
2022-02-21 23:56:52 -05:00
jacob1
982fdff528
Add safeguard to try_move to ensure we don't write to out of bounds pmap
This is a follow up to this crash fix - 0ed8d0a0be
This may possibly fix other crashes users occasionally experience, especially in the case of high velocity particles with loop edge mode on. Even so, there are other bugs at play, as a crash here can't be triggered if pmap is in a correct state
2022-02-21 23:36:10 -05:00
Tamás Bálint Misius
dbd971fb05
Convert float pavg[2] to int tmp3, tmp4
Also add GameSave::PressureInTmp3 to check for elements with pressure memory and fix TUNG not sampling pressure on creation. This does not in itself fix #822 because tmp3 and tmp4 are still saved in 16 bits each, so full ctypes still don't fit in tmp3.
2021-12-09 07:49:31 +01:00
jacob1
0ed8d0a0be
Fix flood_water movement cancel check
This fixes a crash with water equalization on, with loop mode enabled, when there are high velocity particles near the edges. This can be occasionally reproduced with id:2800901

The water was moved to a new position and pmap updated, but the movement code continued, assuming water was at its old position. pmap for the WATR's old position won't be cleared once it moves, leaving a stale entry. If a particle then looks up the water in that location and tries to swap positions, this can cause a crash at the end of try_move
2021-10-23 00:52:13 -04:00
Tamás Bálint Misius
5582d6881d
Update tpt-libs, add support for compiling with MinGW on Windows 2021-10-22 23:14:54 +02:00
Tamás Bálint Misius
d675d483bd
Leave the original GameSave alone in Simulation::Load 2021-10-13 11:26:48 +02:00
Tamás Bálint Misius
ea07244119
Refresh history code in GameMVC 2021-08-04 17:08:23 +02:00
jacob1
cea629c6c0
Make LITH->GLAS reaction easier 2021-07-13 23:01:02 -04:00
Tamás Bálint Misius
cfeda0fdba
Fix GOL showing up where it shouldn't
The underlying problem was that the spreading step in SimulateGOL would record activity concerning a cell to builtinGol even if said cell already housed a non-GOL particle. The culling step handles these records and purges them once it's done (thus builtinGol only ever has non-zero values inside SimulateGOL), except in this case, it saw the non-GOL particle and skipped the cell without purging the corresponding records. This would later let GOL spread seemingly out of nowhere.
2021-07-11 12:21:48 +02:00
jacob1
fe49e58de8
Make ROCK more resistant to DEST (like CNCT is) 2021-07-03 23:34:38 -04:00
Tamás Bálint Misius
dcf0764fd8
Return a reason for failure from sim.loadStamp 2021-06-21 08:04:32 +02:00
Tamás Bálint Misius
ffe730c615
Save ambient heat temperature and add it to options 2021-06-04 22:39:07 +02:00
jacob1
a25fa700e2
Don't show GoL .tmp in HUD, check if create_part was successful while simulating GoL 2021-05-11 23:40:31 -04:00
jacob1
829c0bced5
Fix issue allowing drawing unlimited LIGH with 1x1 cursor
Also fix warnings from a previous commit
2021-05-10 21:04:08 -04:00
jacob1
aac6b7258c
Improve stack pasting behavior
It will now clear all particles in positions being pasted over
2021-05-10 00:02:27 -04:00
jacob1
f441626de4 Fix some issues in elementCount
Count goes negative if an element is killed due to .life=0 on the same frame an elementRecount is scheduled
element count skyrockets when recount is scheduled during game pause
Element count increases by a static amount when undoing, because it schedules a recount without clearing the old counts
2021-04-18 14:01:51 -04:00
Tamás Bálint Misius
11f6abdfca
Update elementCount when restoring a snapshot (fixes #592) 2021-04-18 15:48:10 +02:00
jacob1
ffb88259d6 Split Simulation::IsValidElement into IsElement and IsElementOrNone
Allows finer control over whether you want none included or not.
Fixes some invalid things being allowed for element 0 in legacy lua api
Fixes {ctype} signs showing 0 instead of NONE
2021-04-11 23:20:33 -04:00
Tamás Bálint Misius
1859125218
Fix undo not updating air block map 2021-04-11 21:44:33 +02:00
jacob1
da2ccc70fe Some ROCK fixes
Improve efficiency in FIRE logic, it no longer runs the check multiple times for each surrounding particle. RNG chances reduced accordingly.
Remove unnecessary code in init_can_move
Set Weight to 100, which is the proper max for weight
2021-03-30 23:14:53 -04:00
Tamás Bálint Misius
4b7e85c2fb
Fix a metric ton of MSVC warnings 2021-02-15 21:24:44 +01:00
jacob1
d037178bb5 Fix infinite spark loops in photoelectric effect 2021-01-19 20:54:03 -05:00
Sebastián Mestre
36f661b87f
Clean up some code in Simulation::FloodINST (#758)
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2021-01-10 17:11:33 +01:00
Tamás Bálint Misius
360297c338
Mesonification 2020-12-14 20:16:52 +01:00
Tamás Bálint Misius
86a621741d
Preserve stacked particles in saves being placed (fixes #743) 2020-11-16 12:54:15 +01:00
Tamás Bálint Misius
02a3dcbaa2
Fix replace mode to allow replacing with GOL types 2020-10-12 18:48:20 +02:00
Tamás Bálint Misius
ba72dc7a22
Custom GOL (#731)
Co-authored-by: jacob1 <jfu614@gmail.com>
2020-10-08 20:23:59 +02:00
RCAProduction
1f7e9095da
Add element ROCK (#724) 2020-10-08 01:27:25 +02:00
Tamás Bálint Misius
88fd676cd2
Fix stasis walls not keeping dying GOL cells in stasis 2020-09-22 19:43:01 +02:00
QuanTech0
dda7747688
safeguard FloodParts and kill_part (#717) 2020-05-11 10:20:01 -04:00
QuanTech0
4efe5875ab Simulation::create_part sanity check 2020-04-26 21:00:41 -04:00
jacob1
323a850e16 Don't delete SPRK/METL in detector wall, don't allow drawing metal on detector wall
This fixes the only valid bug on the "Glitches" wiki page. All the rest were already fixed (multi-head stkm) or are not bugs (lava ice, "destroying" dmnd with dray)
2020-04-11 23:51:56 -04:00
jacob1
6b73b2dd9b Fix fighters sometimes loading from saves with no element 2020-02-08 11:10:53 -05:00
jacob1
ca8f4e3aac replace mode: reset created element back to default properties, instead of just changing type 2020-02-08 10:40:29 -05:00
Tamás Bálint Misius
3c6ae35cc4
Fix PMAPBITS compile-time sanity check 2020-01-24 22:25:15 +01:00
Tamás Bálint Misius
4d52531889
Ditch element and tool classes 2020-01-09 19:22:11 +01:00
jacob1
2576175762 remove unnecessary arguments to FloodINST. Fix random warning. 2019-12-23 00:34:21 -05:00
Secundario
a05e20f1bf Do a single CoordStack allocation per thread 2019-12-21 13:14:40 -05:00
jacob1
bf7d182de5 Add CreateAllowed and ChangeType events
Used in create_part, kill_part, and part_change_type, allows us to remove element-specific stuff in those functions
Note: difference between Create and ChangeType is that Create is called when we want to initialize default element properties, but ChangeType is called every time a particle is changed to that type, even if it doesn't need default properties set. ChangeType is mainly used for things that need accurate state tracking, like the stkm spawn status.
ChangeType is called every time a particle is changed to or from its type, which includes if the particle is deleted, and also Lua.

Neither of these functions are called when loading saves, that's probably an oversight, will fix later
2019-11-29 19:32:33 -05:00
jacob1
9993290b72 Add Create function, handles setting default properties for elements that need randomness or special code
Most of the switch statement in create_part is gone. There's a few others that I will get rid of in future commits. There will also be a CreateAllowed function, and a ChangeType. ChangeType will handle stuff that is duplicated in both create_part and part_change_type. Considering making a Destroy function instead of ChangeType, though.

Later on, Lua events will be made for all 3

Credit to jacksonmj for the original design of all of this, I copied it into my mod years ago
2019-11-28 00:22:17 -05:00
jacob1
0078fb4c6f Add DefaultProperties, replaces some of the case statements in create_part
The rest will will in a commit soon that adds the Create event and some other stuff
Lua events will come after that
PLSM default temp lowered to MAX_TEMP
2019-11-25 22:08:18 -05:00
Tamás Bálint Misius
5f7dd033ec
Revert previous change, add NewtonianGravity element property instead 2019-10-17 22:29:24 +02:00
Tamás Bálint Misius
6b85231f23
Incorporate Gravity property into calculation of acceleration due to newtonian gravity 2019-10-16 01:27:48 +02:00
Tamás Bálint Misius
1cea59e521
Make sRGB the default colour space for deco tools, see 51e5f2b 2019-09-22 23:10:57 +02:00
Tamás Bálint Misius
742e030a13
Add gamma = 2.2 and 1.8 modes, see 51e5f2b 2019-09-21 22:16:52 +02:00
Tamás Bálint Misius
51e5f2bffa
Add option to make deco tools use sRGB colour space
Currently only affects the smudge tool. I'd have to look
into the others to decide if they need chaging. They probably
do though, they're not exactly intuitive.

I also fixed a bug with DropDowns where their popup would
show up in some random place if the parent window was a
ScrollPanel, and changed a few alignments here and there.
Notably, DropDowns now align the popup so that the currently
selected item is vertically centered and doesn't move when
the popup is opened.
2019-09-21 21:37:34 +02:00
Tamás Bálint Misius
0e237a1f4b
Remove unused variables from Simulation::FloodINST
These were left behind from before the CoordStack update.
2019-09-14 19:19:24 +02:00
Sebastián Mestre
da5f8068c0 Use CoordStack for INST Flooding (#676) 2019-09-07 19:56:23 -04:00