Commit Graph

174 Commits

Author SHA1 Message Date
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
jacob1
876a9b3096 Fix crashes if returning invalid arguments from graphics or ctypeDraw lua functions 2019-11-24 23:12:22 -05:00
jacob1
b09158220f Fix crash if error happens in ctypeDraw lua function 2019-11-22 23:37:17 -05:00
Tamás Bálint Misius
d17c67b3a4
Fix unsigned integer properties being returned as signed integers from Lua functions 2019-11-14 00:28:27 +01:00
jacob1
9ed7f1e85a Fix crash if any built-in scripts try to use the interface api
We don't have any scripts like this and never will. But if we did, this would fix the crash.
2019-10-17 23:56:40 -04:00
Tamás Bálint Misius
a6127bc1fb
Add Lua API for deco tool colour space, see 51e5f2b 2019-09-21 21:58:50 +02:00
Tamás Bálint Misius
51b78be139
Nicer implementation of sim.parts 2019-09-15 22:14:46 +02:00
jacob1
28d5345bf9 Fix off-by-one issue in sim.parts, fixes #678 2019-09-15 15:37:54 -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
dbd5999d1c
Reinstate inversion of inclusion of pressure when shift is held
This feature was removed temporarily in a407aba.

Whether pressure is included when saving or loading is
determined as follows:

 * load-like operations (which invoke Simulation::Load) always
   include pressure;
 * save-like operations (which invoke Simulation::Save) include
   pressure if the Simulation.IncludePressure preference node
   is true;
 * finally the state of the shift key inverts the decision.
2019-07-16 19:43:52 +02: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
8897c6daea
Make elem.free rebuild menus (fixes #649)
Also make sure removed elements don't stay selected.
2019-06-11 21:12:22 +02:00
Tamás Bálint Misius
75e6ece184
Expose transition constants to Lua (fixes #654) 2019-06-11 20:43:34 +02:00
Tamás Bálint Misius
07b0d52f90
Add more transition type checks and fix tpt.eltransition
Though I'm quite sure nobody actually cares about that table. It's been broken for a
very long time.

The PROP tool now properly calls part_change_type when type is being set.
2019-06-03 19:27:06 +02:00
Tamás Bálint Misius
97bde1111d
Fix part_change_type not being called by sim.partProperty 2019-06-03 12:59:39 +02:00
Tamás Bálint Misius
8671332e60
Fix transition properties not being validated
Also clean up some more of the Lua API code, again. Eww.
2019-06-02 17:49:21 +02:00
jacob1
20c98e9b48 Add sim.CELL constant + some other change I made a while ago for some reason 2019-05-15 00:21:17 -04:00
Tamás Bálint Misius
0179cefc78
Flatten include trees 2019-04-20 15:36:11 +02:00
Tamás Bálint Misius
9d92b77163
Clean up sign-related code a bit
Also draw search signs with purple text and thread signs with red.
2019-04-12 17:09:34 +02:00
Tamás Bálint Misius
59afaec70f
Fix Element::Identifier assignment leak (closes #205)
I didn't use 'fixes' because this doesn't strictly fix that specific
bug (I think?). Anyway, it does remove strdup which is mentioned in the
issue.

Also fix elem.free not allowing DEFAULTFOO_PT_STUFF and similar to
be freed.
2019-04-12 00:27:27 +02:00
Tamás Bálint Misius
06e2836726
Fix Lua reference leaks (fixes #638) 2019-04-09 15:28:40 +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
Tamás Bálint Misius
30c7f6ded7 Rename Download* to Request* and move HTTP stuff inside src/client/http 2019-03-07 22:56:08 -05:00
jacob1
9e110cba73 zoom api changes: throw errors instead of returning bools, zoomEnabled takes book as arg, some small refactoring 2019-03-05 23:43:41 -05:00
ssccsscc
a9b862645a Added Lua function for working with zoom 2019-03-05 23:43:41 -05:00
jacob1
3b3775addf Add blur lua event, called when opening another interface window 2018-12-27 21:17:24 -05:00
jacob1
d0dd9ec22f fix sim.brush being double size, fix compile warning 2018-11-21 12:38:26 -05:00
jacob1
2929264885 embed event api compatibility lua script
probably temporary, can't deprecate and remove an extremely common api in the same version.
lua script embed code mostly copied from my mod
2018-11-17 00:09:48 -05:00
Tamás Bálint Misius
e48bd482f6 Add close event 2018-11-16 23:02:05 -05:00
Tamás Bálint Misius
3de68c4346 Fix event objects not being freed 2018-11-16 23:02:05 -05:00
Tamás Bálint Misius
531229daa9 Move EventTypes inside LuaEvents to prevent global scope pollution 2018-11-16 23:02:05 -05:00
jacob1
a8489ba6f5 add new events api, replaces legacy event functions
event.register(event.mousedown, function(...) print(...) end)
event.unregister(event.mousedown, somefunc)

mouseclick event split into mousedown, mouseup, mousemove, mousewheel
keypress event split into keypress, keyrelease, textinput. key* events only contain keycode and scancode, don't attempt to represent a letter (was very broken at this before). Also have helpful shift/ctrl/alt flags passed in. textinput just represents inserted text, can probably even handle foreign characters.
register_step replaced with event.tick event

All legacy register_* and unregister_ functions are removed. There is a compatibility lua script, might embed it later. tpt.set_shortcuts / tpt.test also removed. event.getmodifiers added, just a misc function to get the currently held modifiers

Lots of code duplication to handle each event is removed, it's not handled in a more generic way. Although the Event class / child classes could use some work.
2018-11-16 00:07:26 -05:00
jacob1
276098f9db fix crash when using elem.element on windows 2018-09-17 23:03:05 -04:00
jacob1
e5230b5b9f upgrade to SDL 2
Still currently in process, there are some issues:
Windows version doesn't work, mac version might not work, opengl might not work
Icon doesn't work (on Linux at least)
Lua will need some changes, there are some sdl 1.2 hacks in there
When entering fullscreen, the window loses focus
When holding down mouse out of bounds, mouse move events stop being sent
When letting go of mouse out of bounds, mouseup event doesn't take into account double scale mode
Clicking on startup without moving mouse will draw at 0,0 for a frame
Renderer probably won't compile because USE_SDL doesn't entirely work

... and maybe others

Some nice things were done though:
no more blit2, sdl can do the scaling itself
3d effect removed, no reason to support this joke any longer
No need to support copy/paste ourselves, sdl does it now
text handling done much better now, separate events for key presses and text input
when a new window is shown, all events ignored until next tick (ignore textinput event if window shown from key press event like console)
2018-05-25 21:19:44 -04:00
mniip
30dd49235d Add ToLower/ToUpper 2018-05-14 05:12:32 +03:00
jacob1
36a545124e fix setting element properties in legacy lua api 2018-05-13 16:16:14 -04:00
mniip
a87acf56b7 Replace strdup with mystrdup 2018-05-10 10:34:45 +03:00
jacob1
8a8cbb81e4 fix getting/setting description in elements api 2018-05-10 00:27:55 -04:00
mniip
6c9cb174fb Change some uses of String::Stream to StringBuilder 2018-05-02 22:11:41 +03: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
fbe81baca3 make Platform::ExecutableName return std::string (fixes minor memory leak)
update code is untested
2018-04-21 19:28:47 -04:00
wolfy1339
27f6a6b297 Strip whitespace from files in repo (#553) 2018-04-03 21:46:01 -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
a0a7281cc7 add TOOL_CYCL lua constant, change ID to 7 2018-02-14 22:19:31 -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
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
63c13bda89 fix use of deprecated luaL_getn function 2017-11-23 22:34:22 -05: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
jacob1
c34b54d974 add sim.takeSnapshot lua function 2017-08-31 23:48:00 -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
b8ce522779 sim.signs.delete() api function 2017-07-16 10:42:53 -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
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
cdc8f64896 fix clang compile warnings, fixes #406
also, sim.ambientAirTemp takes floats now
2017-04-27 23:08:06 -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
Tamás Bálint Misius
57f5d0f84f Add sim.brush (#350) 2016-11-07 18:00:34 -05: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
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
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
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
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
jacob1
fc5f3671f1 new function sim.clearRect, plus fix rounding errors breaking ctrl+x 2015-03-12 00:54:27 -04: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
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
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