Commit Graph

547 Commits

Author SHA1 Message Date
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
jacob1
b975dc2938 Make water equalization fill in areas slightly more naturally 2019-08-10 22:46:41 -04:00
jacob1
2e154e5ff9 Rewrite flood_water to use CoordStack and fix stack overflow, fixes #646 2019-08-10 22:38:44 -04:00
jacob1
e280fea031 arbitrary gravity code cleanup
Was working on modernizing the code in my mod, copied all the changes here too
2019-08-05 00:08:06 -04:00
Tamás Bálint Misius
89ef7ce216
Okay, it wasn't functionally equivalent (see 79f9a2d6) 2019-08-01 16:54:28 +02:00
Tamás Bálint Misius
79f9a2d62d
Prioritise ctypeDraw functions over sparking
This adds an exception from brush-based sparking behaviour for
elements that have a ctypeDraw function. A functionally equivalent
exception has been removed in de1fc0f, thus making it impossible to
ctype-draw SPRK on a few elements that otherwise aren't sparkable,
such as CONV.
2019-08-01 16:47:29 +02:00
jacob1
9327eecd7b Update gravity mask even while paused 2019-07-31 22:28:02 -04:00
Tamás Bálint Misius
de1fc0f906
Revise ctype-drawing (fixes #657) 2019-07-27 19:12:05 +02:00
jacob1
9faf95a858 misc whitespace changes 2019-07-23 00:11:48 -04:00
Tamás Bálint Misius
a407aba087
Make Simulation.IncludePressure pref node accessible from OptionsView
Also remove ugly and messy behaviour depending on whether
shift is being held while copying or stamping.
2019-07-10 00:35:49 +02:00
Tamás Bálint Misius
c193e88c28
Leave only the 'wants pressure' check in Simulation::Load for QRTZ/GLAS/TUNG 2019-05-07 21:15:41 +02:00
Tamás Bálint Misius
0179cefc78
Flatten include trees 2019-04-20 15:36:11 +02:00
Tamás Bálint Misius
c8960d1358
Add more sign macros (fixes #578) 2019-03-31 21:44:54 +02:00
Tamás Bálint Misius
3de92f5ef4
Fix pavg loading behaviour of QRTZ/GLAS/TUNG (fixes #607)
Those particles now save/load pavg if pressure is being saved/loaded.
This means they won't ever break again when being loaded as part of
a stamp.

They actually save pavg01 * 64 because pavg is saved as an integer and
these elements are too sensitive to pressure changes for integer pavg
values to be adequate.
2019-03-31 12:18:41 +02:00
Tamás Bálint Misius
47f898ca5a
Tweak replace mode and specific delete mode (fixes #631) 2019-03-30 23:59:20 +01:00
jacob1
2e17b848b1 Make element names a String (unicode support)
This won't be used by official elements, but mods or lua scripts could and do use unicode
2019-03-12 00:10:43 -04:00
jacob1
28bfa9dfc9 GoL is now affected by stasis wall 2019-02-20 23:25:28 -05:00
jacob1
e8b4256503 Fix gravity sometimes persisting a frame after ctrl+z / clearing sim, fixes #571 2019-01-14 21:11:06 -05:00
jacob1
d0dd9ec22f fix sim.brush being double size, fix compile warning 2018-11-21 12:38:26 -05:00
jacob1
48bc6e02ba Fix gcc 8 warnings 2018-11-03 19:36:07 -04:00
jacob1
7f215a6a17 fix particle #0 not being removed from the photons map when moving 2018-09-09 10:53:02 -04:00
jacob1
bbef295fe3 fix default elements disappearing when loading saves if the identifiers don't match 2018-08-24 23:10:46 -04:00
jacob1
92244f78bb initialize some variables to fix -Werror=maybe-uninitialized warnings
most aren't actually bugs, but gcc isn't able to determine that the paths it can follow guarantee they are initialized
2018-07-08 00:49:35 -04:00
jacob1
56cba4595c Merge branch 'unicode' 2018-05-06 20:15:23 -04:00
jacob1
49703404be change almost all the rest of the rng calls to .chance/.between 2018-05-05 11:56:17 -04:00
mniip
a121c62c3b Add some helper methods and rewrite some of the string manipulation code 2018-05-02 01:32:04 +03:00
mniip
ff27d69424 Switch from std::string to String/ByteString in most of the code
Also switch SimulationData from weird arrays to std::vector
2018-04-30 21:13:24 +03:00
jacob1
67132c9925 fix another out of bounds crash relating to stasis wall 2018-04-28 11:45:16 -04:00
jacob1
be57130c7a fix crash when particles are out of bounds 2018-04-28 00:27:03 -04:00
jacob1
db8b32363e remove tpt-math.h includes 2018-04-28 00:09:14 -04:00
jacob1
601af1feff fix compile warnings, remove ugly PRTI/PRTO hack 2018-04-23 21:57:30 -04:00
Saveliy Skresanov
cda029ff42 Use xoroshiro128+ random generator (everywhere besides BSON code). 2018-04-23 22:47:44 +07:00
jacob1
11b2f58db7 define M_PI in tpt-math.h 2018-04-05 23:31:28 -04:00
jacob1
7f985b47dc whitespace fixes + description change 2018-04-03 22:33:25 -04:00
moonheart08
3f99a59cb2 Adds STASIS wall. (#556) 2018-04-03 22:24:38 -04:00
wolfy1339
27f6a6b297 Strip whitespace from files in repo (#553) 2018-04-03 21:46:01 -04:00
jacob1
07868ba2b7 Adjust SOAP links to non-SOAP particles properly when saving 2018-04-01 16:04:38 -04:00
jacob1
67bc12de97 Fix issue where TPT was bought by EA 2018-04-01 15:26:13 -04:00
jacob1
40d2850ff7 TPT has now gone free to play! Many elements are unlocked by default, but by using Powdercoins you can unlock new elements and promote your saves to front page! 2018-03-31 22:40:23 -04:00
jacob1
1f97199df6 fix solar panels sometimes not working 2018-03-25 18:34:25 -04:00
jacob1
fac996722b save stickmen rocket boots / fan flag in saves 2018-03-24 13:09:02 -04:00
jacob1
3bd35ce83f fix STKM + fan wall 2018-03-21 23:58:27 -04:00
jacob1
f45d0d1683 save palette now works for elements stored in ctype/tmp/tmp2 2018-03-17 21:46:35 -04:00
jacob1
c861d69f9c add RESTRICT_VERSION check to digitation stuff, update readme date 2018-03-10 17:03:44 -05:00
jacob1
ab4cdf2aa1 minor efficiency fix 2018-03-10 15:43:25 -05:00
jacob1
ad5b12fe6d part_change_type now returns true if it killed the particle 2018-03-10 15:39:39 -05:00
jacob1
5a61e6a619 a bunch of fixes to heat/pressure digitation
add limits so that you don't get impossible temp or pressures
only undigitize from FILT 1 pixel away
ensure everything only works through FILT, not sometimes PHOT or BRAY
HSWC with .tmp of 1 no longer conducts heat to FILT
2018-03-07 23:03:10 -05:00
jacob1
5f4c5fb118 Fix &255 usage 2018-02-28 22:01:49 -05:00
krawthekrow
d7e26e8c03 fix free particle list messing up during particle debug 2018-02-24 18:24:07 -05:00
jombo23
0a63e1afb5 Add Cyclone Tool and Brush X/Y Arguments (#542) 2018-02-13 00:08:00 -05:00
Nikolay Marchuk
30b8078ad2 fix undoing changes in gravity mask 2018-02-13 00:06:55 -05:00
jacob1
1237b49e37 allow compiling renderer with --msvc in scons 2018-02-11 14:47:36 -05:00
jacob1
07988147b9 prevent compiling if pmap doesn't have enough space, make lua elements favor 1 byte IDs 2018-01-01 00:31:44 -05:00
jacob1
b5159ab74e Changes to save format and PIPE
Update save format to optionally store type as two bits
PIPE now stores element in ctype
Disallow uploading saves using two bytes in type or other fields
update save format to store pmapbits and automatically convert data
2017-12-31 23:55:41 -05:00
jacob1
20e1abd840 update Simulation.cpp to use new macros 2017-12-29 17:34:19 -05:00
jacob1
fbf7210814 fix division by 0 in PHOT+C5 interaction, shoot the photon off at 90 degrees instead 2017-12-27 18:11:33 -05:00
jacob1
23c68b1db1 fix issue loading manually created SOAP bubbles in some saves 2017-12-19 22:15:32 -05:00
jacob1
553eaf9524 fix loading saves with stacked particles 2017-12-19 21:15:19 -05:00
jacob1
e956e7c5fd fix issue where stamps would stack if you loaded multiple in one frame
sim.loadStamp in the console, or a lua script
2017-12-03 19:30:21 -05:00
jacob1
c2064b48c3 fix comment 2017-11-23 22:23:56 -05:00