Commit Graph

223 Commits

Author SHA1 Message Date
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
0c8c4de125 convert all of the rest of the things except GameSave.cpp and pipe/ray elements
also add sim.PMAPBITS and sim.PMAPMASK constants
2017-12-29 21:01:28 -05:00
jacob1
ac24810da5 add some defines to reduce usages of hardcoded r>>8 2017-12-28 12:03:26 -05:00
jacob1
63c13bda89 fix use of deprecated luaL_getn function 2017-11-23 22:34:22 -05:00
LBPHacker
be29fad7e8 Add support for window scale modes other than 1 and 2
Window scale can now be anything between 1 and 10 (suggest something other than 10 for maximum scale?). This required a number of subtle changes:

 * made blit2 (PowderToySDL.cpp) handle scale modes correctly (it really only handled scale:2 correctly before)
 * replaced `bool scale` with `int scale` everywhere in the options view/model/controller
 * replaced the _large screen_ checkbox with a _window scale_ textbox in the options view

The new scale is only checked and applied when the options view is closed. There's no reason to not apply it live, I just chose not to.

This commit does *not* make TPT able to figure out an optimal scale mode at first run. It still suggests using scale:2 if it makes sense though.

I had doubts about using a second loop in blit2 but it doesn't seem to be an issue. If there's a more optimal way of going about what blit2 does, I haven't figured it out.

(Sublime seems to have eaten a few trailing spaces, hence there are a few seemingly identical pairs of lines in the diff.)
2017-11-23 12:24:34 -05:00
jacob1
1b19e042b2 fix crash when using tpt.start_getPartIndex 2017-11-04 13:22:22 -04:00
jacob1
6bd068713e recording improvements
remove 'r' record shortcut
add tpt.record function. Still gives the user a confirm prompt
recordings now go into recordings/<timestamp>/, where timestamp is the time the recording was started. <timestamp> is returned by the tpt.record function. Each new recording starts the filenames over at 0 again.

you probably still need a lua script to use the recording feature, this should make it easier for those
2017-09-04 14:06:28 -04:00
QuanTech0
07e879e74c fix buffer overflow in opt_meth_setoption (#496) 2017-09-03 19:48:28 -04:00
jacob1
c34b54d974 add sim.takeSnapshot lua function 2017-08-31 23:48:00 -04:00
jacob1
1ceae1ba43 fix interface api in lua5.2 2017-08-20 18:13:46 -04:00
jacob1
6931f35520 hold shift when saving or loading stamps to not save / load pressure, closes #491 2017-08-03 00:13:06 -04:00
jacob1
adb39b91a9 attempt to reduce "script is not responding" when debugging (valgrind / breakpoints) 2017-07-28 20:32:46 -04:00
jacob1
8064d3b467 remove useless debug print in !set 2017-07-25 20:11:57 -04:00
jacob1
ad5a2a0972 tpt.parts: only prevent writing to dead particles, not reading 2017-07-16 11:43:50 -04:00
jacob1
b8ce522779 sim.signs.delete() api function 2017-07-16 10:42:53 -04:00
jacob1
6d141b0722 add new PhotonReflectWavelengths property, add reflection color for POLO 2017-07-16 00:07:32 -04:00
jacob1
5ee10d14e4 reduce unnecessary #include dependency chains
for example, elements no longer include Client.h or Graphics.h, and interface stuff won't include Window.h or Graphics.h unless requested
2017-07-13 23:24:35 -04:00
jacob1
f3a7d966d2 potential fix in sim.partCreate, also 2017-07-13 20:55:03 -04:00
LBPHacker
7dd538b82c Fix tpt.parts being unsafe
`tpt.parts` does check whether the particle ID it gets is valid, but it doesn't check whether that particle ID is used. One could potentially modify the life property of dead particles to break the linked list of free particle IDs, thus potentially gaining the ability to read from or write to arbitrary addresses in memory.
2017-07-13 20:33:46 -04:00
jacob1
8e5b0c760e Add logging inside saves which remembers which other saves material was taken from
The logging is saved inside the bson data in all online saves, local saves, stamps, and clipboard pieces. It is loaded back when reloading each of those.

See #474 for the format of the data. It is the same format for the bson data. Note that "links" is an array of objects. It can be recursive.

There is some effort to not duplicate information, we don't care if you loaded a stamp 10 times or if you are using the clipboard in your own save. Extra information is mostly not saved for your own stuff, only when you take material from other saves.

Press ctrl+a in debug builds to show what info it is currently saving in Client. Also enabled in snapshots for now.

There is one unrelated change in here, which fixes a crash pointed out by QuanTech. It was also save related and it was too close to the other changes to separate it into another commit. It fixes a crash when saving signs with invalid unicode. the BSON library doesn't like this, it was returning an error but we ignored it, which caused a crash. It now notices those errors. I also had to update several Serialize calls to check if it actually returned save data, or else it then would have started crashing there instead.
Also some debug prints were removed
2017-07-13 00:19:35 -04:00
jacob1
ec417095b9 add sim.TOOL_MIX, fixes #414 2017-05-09 21:59:15 -04:00
jacob1
ce054bfc3f fix misc. errors reported by clang static analyzer 2017-05-06 20:02:23 -04:00
jacob1
cdc8f64896 fix clang compile warnings, fixes #406
also, sim.ambientAirTemp takes floats now
2017-04-27 23:08:06 -04:00
jacob1
866289c179 remove duplicate function, fix Simulation::GetParticleType, fixes #402 2017-04-21 20:24:24 -04:00
jacob1
e712a8dbec make last 3 arguments to sim.brush optional, for convenience 2017-04-17 23:28:12 -04:00
LBPHacker
e9d80fe52a sizeof(unsigned char) 2017-04-17 23:28:12 -04:00
LBPHacker
5cf3fa3f5b More parameters for sim.brush 2017-04-17 23:28:12 -04:00
Issue tracking bot
d9115fc3fe Fix -Werror=misleading-indentation (#369) 2017-02-20 18:51:10 -05:00
jacob1
51eeaf218d fix crash when doing Textbox.new() 2017-02-13 17:43:48 -05:00
Tamás Bálint Misius
57f5d0f84f Add sim.brush (#350) 2016-11-07 18:00:34 -05:00
jacob1
797f9357ff fix float detection in console, fixes stuff like !set type all 0.8C 2016-09-10 12:46:15 -04:00
jacob1
ecb08952e5 Add SDL_keysym.h, Use official SDL constants 2016-07-19 22:42:10 -04:00
wolfy1339
b65e94900e Use C++ includes (#308)
Replaces stdio.h, stdlib.h, string.h, math.h, time.h, limits.h and othters with their C++ equivalents.
2016-07-17 23:37:24 -04:00
jacob1
eafd8115b0 add onlyEnabled option to tpt.num_menus (probably useless) 2016-07-17 23:36:36 -04:00
jacob1
8a0496e60a another fix for lua key events 2016-07-17 18:19:00 -04:00
jacob1
16b93083d4 Changes to support starcatcher build server with updates
Cherry-picked from 3ddaec7b2a
3ddaec7b2a
3ddaec7b2a
3ddaec7b2a
3ddaec7b2a
3ddaec7b2a
2016-07-09 19:00:54 -04:00
jacob1
b75c8318e4 add tpt.num_menus and tpt.menu_enabled functions 2016-07-08 20:33:01 -04:00
jacob1
9a18338476 remove debugging thing 2016-06-11 23:50:46 -04:00
jacob1
2a541bd2f5 fix for lua keydown events, send 'j' when ctrl+somekey is pressed, not ^J 2016-06-11 15:54:19 -04:00
jacob1
57be4ef498 'character' is always 0 in sdl keyup event, so just send 'key' instead to lua keyup events 2016-04-26 22:42:57 -04:00
jacob1
aa99258101 more cleanup so that 3D can stay a more permanent thing 2016-04-02 00:10:15 -04:00
jacob1
46d096206f Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience 2016-03-31 22:08:04 -04:00
jacob1
aa108be3df Pass in actual character sdl saw into keypress functions
Previously you couldn't detect what shift+somekey would do on alternate keyboard layours.
2016-01-31 21:39:39 -05:00
jacob1
28598a43be another compiler fix (include <stdexcept> manually) 2016-01-26 00:31:05 -05:00
jacob1
f6d82b6f8a separate t and v argument in create_part, fix LIGH not defaulting to .life of 30 with clones / console 2016-01-11 22:38:42 -05:00
jacob1
37eb674d40 fix being unable to set floating point values in element.property
broken in e92bbac700
2015-12-18 18:21:04 -05:00
jacob1
b9c3eeae92 Allow old lua scripts which use state to work 2015-12-18 02:07:16 -05:00
jacob1
f63c3072a4 fix crash when doing simulation = nil in the console 2015-12-11 12:05:00 -05:00
jacob1
9a9f80fefa don't add extra newlines when downloading scripts via tpt.getscript 2015-10-23 00:18:41 -04:00
jacob1
bc112b54df initialize GoL variables, add sim.gspeed function 2015-10-10 00:03:04 -04:00
jacob1
9c44fc641c fix crash with sim.floodWalls(1,1,4,0) 2015-09-29 00:09:41 -04:00
jacob1
1f7b6a6bb4 fix wind line from lua changing brush size, allow setting wind tool strength 2015-09-28 23:53:14 -04:00
jacob1
cae8c9e095 fix some compile errors with last commit, remove snapshot version info from HUD and add to intro text instead, add tpt.version.snapshot 2015-09-26 14:56:37 -04:00
jacob1
13a71b611a more tptmp mouse fixes, fix buttons and menusection buttons staying highlighted sometimes 2015-09-22 19:59:31 -04:00
jacob1
16781bcb8e two new lua mouse up events (4 & 5) for some corner cases
Also fixes mouse held event being stuck in one of those cases
2015-09-20 21:40:00 -04:00
jacob1
bbdbb67079 fix tpt.brushx returning incorrect value when brush is updated with tpt.brushID 2015-09-19 20:01:53 -04:00
jacob1
f5774ad9b9 update tpt.getscript to use starcatcher.us 2015-09-18 13:00:01 -04:00
jacob1
e9043c93aa fix lua windows to allow -1 for position again (centers the window) 2015-09-16 01:48:15 -04:00
jacob1
a629979d8b fix tpt.reset_spark to also reset WIFI 2015-09-10 23:59:13 -04:00
jacob1
f827e125cb fix sim.loadStamp / tptmp crash 2015-09-10 13:07:52 -04:00
jacob1
fee8516157 new function tpt.confirm (confirm prompt which returns true or false) 2015-09-08 01:27:20 -04:00
jacob1
fbbc755283 resetting sparks resets any sparks in WIFI too 2015-09-01 01:27:03 -04:00
jacob1
476c2cce06 new sim.signs api
It is a metatable that can set/read text, x, y, and justification; and also read displayText, screenX, screenW, width, and height

There is also a function sim.signs.new, it returns the new sign id or nil if it can't create a new sign
2015-09-01 00:57:31 -04:00
jacob1
df854f72a6 only print 'Loaded autorun.lua' to screen (not to console/stdout.txt)
All the other debug output was already removed in earlier commits
2015-08-31 23:51:50 -04:00
jacob1
9048a3c50e new lua API: platform
you can get current OS / build information, exe name, restart tpt, open a link in the web browser, and use clipboard copy/paste functions

Also remove some older Platform.h file which wasn't really needed or used
2015-08-31 23:33:40 -04:00
jacob1
580b6101c4 fix interface.removeComponent being an alias for interface.addComponent 2015-06-29 16:25:39 -04:00
Aditya Vaidya
13cc593d13 Fixed most spelling errors in code. 'originaly' is read as 'original Y', so not a typo 2015-05-18 15:16:01 -05:00
jacksonmj
34567bc496 Merge pull request #247 from ryanmjacobs:fix_pointer_checks 2015-05-16 02:19:08 +01:00
jacob1
fc5f3671f1 new function sim.clearRect, plus fix rounding errors breaking ctrl+x 2015-03-12 00:54:27 -04:00
jacksonmj
8f57c9a6c7 Correct return type for TPTScriptInterface::parseInt
so that large integers don't get changed into slightly different values by rounding caused by conversion to a float and back again.
2015-03-01 15:52:15 +00:00
Ryan Jacobs
55a30673c4 Remove unnecessary pointer checks.
There are *no* more spacing issues. I used tabs exclusively.
Also, I made changes off of the develop branch.

Here's the Ruby regex that I used:
text.gsub!(/(( |\t)*)if ?\((.*)\) ?{?\n?( |\t)*(free ?\(|delete |delete\[\] )(.*)\)?;/, "\\1\\5\\6;")
2015-02-14 22:13:26 -08:00
jacob1
b06af530a5 fix lua5.2 compiling (that isn't defined until we include the headers ...) 2015-02-14 00:01:31 -05:00
jacob1
316d0f1ace --luajit and --lua52 compile options
no longer looks for lua 5.2 unless you tell it to
2015-02-13 18:20:52 -05:00
jacob1
03e07945e3 fix lua element update bugs, fixes #244
also add new mode for functions run before the normal update function
2015-02-13 14:18:55 -05:00
jacob1
6cb78186be sim.framerender function to simulate a certain number of frames
also remove particle debugging lua function now that there are key shortcuts
2015-02-06 20:34:07 -05:00
jacob1
54d985f975 gcc warning fixes (up to lua files) 2015-01-16 17:26:13 -05:00
jacob1
3a52453561 move more stuff around, remove loop through particles to decrease life and put it in the pmap one instead (like in my mod) 2015-01-11 14:36:40 -05:00
jacob1
577ae3400f move some stuff around (without changes) in Simulation.cpp, add sim.updateParticles function 2015-01-11 13:17:18 -05:00
jacob1
dce874484a fix all the gcc warnings in the element files (except one in PSTN) + all the unused variable warnings 2015-01-10 22:43:33 -05:00
jacob1
a5797f6262 reset length when running step functions in case a step was unregistered, fixes first half of #210
also cleanup / make it easier to read
2015-01-10 20:10:42 -05:00
jacob1
e92bbac700 fix some lua crashes (use more argument checking) 2015-01-10 18:59:20 -05:00
jacksonmj
236ff08da9 Fix some problems noted in http://www.viva64.com/en/b/0298/
I've left some of the less important items, like SearchView.cpp "'then' statement is equivalent to the 'else' statement", and RequestBroker::Request::~Request, because I don't feel like spending a few days entirely rewriting those files at the moment (which is what I'd end up doing if I started fixing minor problems and refactoring...)

GameSave::readOPS - not changed. At some point we may have to move to a larger type for element IDs (probably two or four bytes), but PT_NUM isn't likely to be raised to the maximum value of that type immediately, so this check will be needed then. There should be an elements[partsData[i]].Enabled check in there too, but it might be a bit difficult - I'm not sure how to access a Simulation object from GameSave::readOPS...

Notes on changes:

Graphics::textsize, Element_FRZW::Element_FRZW - typos

Button::Draw - the extra case was originally used to invert the icon (draw it in black instead of in white) when the button was clicked. However, the icon colour is now automatically set depending on the background colour. (Note similar conditions "if(Enabled) { if(isButtonDown || (isTogglable && toggle)) " near the start of the function - same logic but in a different place, setting icon colour indirectly).

Simulation::transform_save - unused redundant function, everything uses GameSave::Transform which does much the same thing.

PreviewView::NotifySaveChanged - should be height==YRES/2, it's checking whether the preview image is the correct size, and resizing it if it isn't.

Element_FWRK::update - no idea why that line was there, even though it was my commit that originally added it...
2014-12-25 17:09:35 +00:00
jacob1
c9cc2a1a6b more accurate elementCount (part_change_type, pasting stamps, lua), prevent having multiple STKM / SPWN even more 2014-11-20 21:51:45 -05:00
jacob1
efaa32363f page textbox in browser (go to any page)
also fix page count (add one for front page), and make page count invisible until the saves actually load
2014-11-11 17:25:50 -05:00
jacob1
a801f0a0b4 allow lua mousepress event to cancel drawing, fixes #229 2014-11-06 20:06:45 -05:00
jacob1
ca0eecee80 pavg0 / pavg1 properties can be set through the console and prop 2014-10-26 18:11:46 -04:00
jacob1
7582acfb5c add sim.photons (like sim.pmap but for photons), sim.(part)neighbors also checks photons, fix sim.gravMap 2014-10-26 16:52:42 -04:00
jacob1
16522056fb fix bug where !set arguments would be cast to float then back to int 2014-10-08 00:35:50 -04:00
jacob1
c16caed5dd fix level 1 msvc compiling warnings + initialize debugFlags 2014-10-08 00:15:51 -04:00
jacob1
32328ad4fe re-implement tpt.setdebug 2014-09-27 22:25:15 -04:00
jacob1
e91a7f1ec4 prevent setting invalid element numbers in the old console 2014-08-29 18:11:00 -04:00
jacob1
925ff1da3c add lua5.2 support for no particular reason 2014-08-22 01:25:34 -04:00
jacob1
f8782338d7 make tpt.selected* and tpt.brushx/y writable (replaces simstate branch) 2014-08-19 02:01:31 -04:00
jacob1
fd550be6ae fix invalid hex number detection also 2014-08-09 00:01:24 -04:00
jacob1
e388a4bbad better float detection in old console 2014-08-08 22:18:01 -04:00
jacob1
298e0b63c3 fix bugs with previous commit using FloatType 2014-08-06 23:22:37 -04:00
jacob1
ccb3de7365 support floats in the console
There are some strange bugs with parsing like !set type all 3.5 or !set temp all moo but they aren't too important ...
2014-08-06 12:18:57 -04:00
jacksonmj
c83945e281 Allow PHOT deco, in old saves only 2014-08-05 22:11:07 +01:00
boxmein
7ab6a7e7d7 luatpt_getPartIndex now passes a negative (invalid) index when it fails 2014-06-13 00:25:22 +03:00
jacob1
c44e734abe fix crashes when the selected element is NULL (via lua), add gfx.getHexColor (inverse of gfx.getColors) 2014-06-09 17:42:44 -04:00
jacob1
89ffa60529 New graphics api function: getColors, returns r, b, g, and a from a hex color
Also, remove generated/ and build/generated when using scons -c
2014-06-09 16:50:49 -04:00
jacob1
45862a1b9f only use Application Support directory on OS X 10.9, probably fix crash on startup for macs
The original reason it broke on macs was because gFinderLaunch was broken
2014-06-08 20:37:44 -04:00
jacob1
6749c2547f New SConscript (hopefully better)
Fixes a lot of bugs, also almost all options are no longer needed and are just auto-detected
2014-06-08 19:33:58 -04:00
jacob1
9bb4d92717 prevent setting invalid wall types with lua 2014-06-02 00:41:25 -04:00
jacksonmj
7b9f43b8bf Fix some missing return values 2014-05-23 00:00:54 +01:00
mniip
ecf1f0e391 backport lua code highlighting from my console 2014-05-06 01:16:55 +04:00
jacob1
5b67c8ce68 elem.property and elem.element can read Identifiers 2014-03-15 14:20:40 -04:00
jacob1
258aaedb0a add sim.reloadSave, tpt.selectedreplace 2014-03-13 14:44:39 -04:00
jacob1
3f65b47a5e small change to sim.partProperty 2014-03-10 17:20:50 -04:00
jacob1
7603da0242 fix tpt.set_property again 2014-03-09 15:31:32 -04:00
jacob1
21854df9f3 lots of random fixes to the legacy lua api 2014-03-04 20:44:25 -05:00
jacksonmj
a5ea6555f1 Fix more bugs in the Lua API
Crash with sim.partKill(large number).
sim.neighbours() looking for particles in completely the wrong place.
Impossible to tell from sim.partID whether a particle exists, since it returns 0 both if there is no particle there and if particle 0 is there.
2014-03-04 23:34:51 +00:00
mniip
4152bb560e Do not use loadstring to load autorun (who even wrote this?). Also print a message in case of successful autorun load 2014-03-04 15:26:35 +04:00
jacksonmj
64e16025d8 Fix bug in Lua API sim.neighbours() causing some particles to be missed out
Was excluding all particles with the same x or y as the centre instead of just the centre particle.
2014-03-03 22:42:21 +00:00
jacksonmj
224b25fae5 Fix Lua API sim.partNeighbours with 4 arguments 2014-03-03 20:09:35 +00:00
jacob1
4158581b21 fix error logging in lua key events 2014-03-03 13:46:46 -05:00
jacob1
d59253cfc7 fix sim.deleteStamp and sim.loadStamp (couldn't load/delete stamps with names like 530e908700) 2014-02-26 20:29:15 -05:00
mniip
55284e6313 Fix most of clipboard-related memory leaks and potential crashes; Fixes jacob#23 2014-02-25 18:44:44 +04:00
nucular
8561976121 Fix (hopefully) most of the R/W errors inside the new Lua API 2014-02-22 10:13:09 -05:00
jacob1
71f90b5d59 new function: sim.deleteStamp
mostly for use in tpt multiplayer
2014-02-20 16:02:32 -05:00
mniip
a105ed9df8 Use system clock instead of used CPU time. Fixes key repeat and some
other stuff. close #206
2014-02-13 00:26:34 +04:00
jacob1
5b886fc51e boxmein: Added clipboard support to Lua 2014-01-29 17:57:18 -05:00
jacob1
f66679e551 a little reorganization (maybe more later) 2014-01-20 13:52:53 -05:00